是否可以将字符串列表保存为CSV并再次读取为(字符串列表)?

时间:2019-02-23 21:05:58

标签: 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”风格只是一个实验。默认样式不会改变任何内容

1 个答案:

答案 0 :(得分:0)

  

这是一个错误

当然不是。

您可能会发现JSON比CSV格式z.B更适合您的需求。模具名称“ auswertung.json”表明您已经开始对此进行探索。当将每个元素序列化为CSV时,编写者将调用str()。您可能会发现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)