使用Python将列表字典转换为CSV文件

时间:2017-08-06 17:21:27

标签: python list csv dictionary

我试图找到我想要的相同问题,我没想到。我尝试学习列表的python字典并转换为CSV文件。 Tha案就是这样的。我试图创建一个键的标题,我试图创建一个数据作为值。

header_column = ["id", "data"]
text = ["1, first", "2, second", "3, thrid"]
for k in header_column:
    a = {k:text}
    insert = open('sample.csv', 'wb')
    insert.write(str(a))

在csv上,我想要:

id data
1  First
2  Second
3  Thrid

4 个答案:

答案 0 :(得分:2)

你为什么要使用字典?您可以使用csv模块并直接编写这些列表。

import csv

header_column = ["id", "data"]
text = ["1, first", "2, second", "3, third"]

with open('sample.tsv', 'wb') as f:
    writer = csv.writer(f, delimiter='\t')
    writer.writerow(header_column)
    for l in text:
        writer.writerow(l.split(', '))

这可以按预期工作,给出

id  data
1   first
2   second
3   third

请注意excel了解您的代码是以制表符分隔的,您需要将其另存为.tsv文件。

答案 1 :(得分:1)

迭代列表并逐行编写每一行更有效。这样可以防止创建字典,从而使列表大小增加一倍。

我选择不使用csv模块,只是直接写入文件,因为您写入文件的值已经被解析为字符串(标题除外,需要加入为一个字符串)。

header_column = ...
text = ...
with open('sample.csv', 'wb') as f:
    f.write(", ".join(header_column) + '\n')
    for row in text:
        f.write(row + '\n')

答案 2 :(得分:0)

我是一个简单的灵魂。使用先进技术并不是固有的需要。

>>> header_column = ["id", "data"]
>>> text = ["1, first", "2, second", "3, thrid"]
>>> with open('sample.csv', 'w') as sample:
...     n = sample.write(' '.join(header_column)+'\n')
...     for item in text:
...         n = sample.write(item.replace(',', '')+'\n')

编辑:响应评论稍有改动的代码。请注意第二个写语句中的其他.replace("'", '')

>>> with open('sample.csv', 'w') as sample:
...     n = sample.write(' '.join(header_column)+'\n')
...     for item in text:
...         n = sample.write(item.replace(',', '').replace("'", '')+'\n')

答案 3 :(得分:-1)

只导入numpy pip -install numpy

import numpy
a = numpy.asarray([ [1,first], [2,second], [3,third] ])
numpy.savetxt("sample.csv", a, delimiter=",")