我试图找到我想要的相同问题,我没想到。我尝试学习列表的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
答案 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=",")