将列表中的数据提取到CSV文件中的多行(Python3)

时间:2017-07-21 17:27:25

标签: python csv

我是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的矩阵(使用数组),但是无法弄明白。

谢谢你的时间!

2 个答案:

答案 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)]