python-3.x - 是否可以将字符串列表保存到 CSV 并再次将其作为(字符串)列表读取?
问题描述
我遇到了一个尴尬的问题:我想解析一个大的 csv 文件,封装其中的一些信息(包括关键字列表,'err')并将内容存储到另一个 csv 文件。
我要做的是:
with open('auswertung.json', 'w') as raus:
craus = csv.DictWriter(raus, ['entr', 'yr', 'err', 'lang', 'status',
'plat', 'os'], dialect='unix')
craus.writeheader()
leser = csv.reader(f)
for z in leser:
problems = []
kat = {'entr': z[0], 'yr': int(z[0][4:8]), 'err': None, 'lang': None,
'status': z[1], 'plat': None, 'os': None}
kat['err'] = ['one', 'two', 'three']
more stuff
craus.writerow(kat)
但是,模块将 'err' 存储为
"['one', 'two', 'three']"
当我尝试在另一个程序中使用 DictReader 阅读它时。那是一个字符串...使用 list() 对其进行强制转换会创建一个列表,其中所有字母都作为列表成员。
这是一个错误还是不打算用 csv 存储值列表?我怎样才能解决这个问题?
“unix”风格只是一个实验。默认样式不会改变任何东西
解决方案
这是一个错误吗
当然不是。
您可能会发现 JSON 比 CSV 格式更适合您的需求,zB die name 'auswertung.json' 表明您已经开始探索这一点。编写器将str()
在将每个元素序列化为 CSV 时调用它。您可能会发现dumps()
(或转储)是您的朋友。
如果您愿意$ pip install pandas
,您可能会发现这pd.to_csv()
是一种序列化一堆行(或pd.to_json()
)的便捷方式。
风格 nit:最好每行列出一个值:
kat = dict(entr=z[0],
yr=int(z[0][4:8]),
err=None,
lang=None,
status=z[1],
plat=None,
os=None)
推荐阅读
- python - 在 Python 中使用 scour 或任何其他优化器优化 svg
- c# - log4net - 记录到数据库表
- python - Django:注释每个对象的重复值数量的计数
- java - ArrayList 的转换
> 列出 - >
- python - 安装 Anaconda 时出错
- android - 如何在 GridView [Kotlin] [Android Studio] 中读取和更新 EditText
- jquery - 将可拖动幻灯片捕捉到下一个或上一个幻灯片位置
- python - aws linux virtualenv 安装扭曲
- python - 向 GitHub API 发送 GET 请求,请求获取 Pull Request 中的提交消息列表
- python - Python:从列表中删除项目并保持原始列表顺序