python - 如何防止嵌套列表被 Python 的 csv.reader 解析为字符串?
问题描述
我有一个嵌套列表,如下所示:
[[['Mario', 100], ['Luigi', 100]], [['Donatello', 200]]]
我正在尝试将其保存到 CSV 文件中,如下所示:
import csv
with open('myfile.csv', 'w', newline='') as file:
csv_writer = csv.writer(file, delimiter=';')
for row in mylist:
csv_writer.writerow(row)
然后我像这样读它:
with open('myfile.csv', 'r') as file:
csv_reader = csv.reader(file, delimiter=';')
for row in csv_reader:
list_to_return.append(row)
return list_to_return
当我检查 myfile.csv 时,它看起来像这样:
['Mario', 100];['Luigi', 100]
['Donatello', 200]
但是,当我从 myfile.csv 读取时,列表如下所示:
[["['Mario', 100]", "['Luigi', 100]"], ["['Donatello', 200]"]]
换句话说,最里面的列表似乎被 CSV 阅读器解析为字符串,而不是列表。
我想知道你们中是否有人可以帮助我解决这个问题。为什么嵌套的 Python 列表会被 CSV 阅读器解析为字符串?
解决方案
使用此处给出的 Numpy 代码:
import numpy as np
a = np.array([[['Mario', 100], ['Luigi', 100]], [['Donatello', 200]]])
print(a)
np.savez_compressed('myfile.npz', a=a)
arr_read = np.load('myfile.npz', allow_pickle=True)
arr_from_file = arr_read['a']
print(arr_from_file)
输出:
[list([['Mario', 100], ['Luigi', 100]]) list([['Donatello', 200]])]
[list([['Mario', 100], ['Luigi', 100]]) list([['Donatello', 200]])]
推荐阅读
- git - git 合并后缺少代码。提交存在,但未显示在文件更改中。我们如何才能恢复更改?
- c++ - C++ - 在统计分配的数组中打印对象会导致分段错误
- vue.js - Vuejs:按计划显示日期索引的数据
- r - 将 R 对象转换为数据框
- node.js - I am getting empty array when the requestResponse is empty in MongoDB
- python - Post request with payload and headers returns error page
- azure - Azure 资源组 URL
- javascript - npm 错误!依赖“fsevents”的对象为空
- java - How to avoid the console log for each request in a java Servlet?
- angular6 - Is it possible to read env variable in Angular application