我是python的新手(使用python 3.6)。从Python中的列表中提取信息到csv文件时遇到麻烦。我有以下列表包含108个字符串:
lines = [('10-k','2','3','4','10-k','6','7','8','10-K','10','11',...,'108']
这样每四个字符串就有一个'10 -k'字。我试图使用以下代码在csv文件中提取此列表:
with open ('extracted.csv', 'w') as out_file:
wr = csv.writer(out_file)
wr.writerow(["file_form", "n1", "n2", "n3"]) # Headlines
wr.writerow(lines)
'extracted.csv'文件生成两行:a)带有标题的顶行(ok)和b)第二行,每个字符串位于不同的列中(即第2行的列数与字符串数一样多) ,即108列)。我希望我的extracted.csv文件在每个'10 -k'字符串处生成一个新行。最后,每行将有27行×4列= 108个字符串。 我一直试图从我的长字符串中生成一个27x4的矩阵(使用数组),但是无法弄明白。
谢谢你的时间!
答案 0 :(得分:2)
如果您可以保证数据一致(10-k
始终显示每4个元素),您可以遍历lines
并提取大小为4的块。因此,这应该有效:
with open ('extracted.csv', 'w') as out_file:
wr = csv.writer(out_file)
wr.writerow(["file_form", "n1", "n2", "n3"]) # Headlines
for i in range(0, len(lines), 4):
wr.writerow(lines[i : i + 4])
答案 1 :(得分:0)
您可以使用列表理解:
lines = [('10-k','2','3','4','10-k','6','7','8')][0]
rows = [lines[i:i+4] for i in range(0, len(lines), 4)]