将列表列表导出到CSV文件

时间:2018-10-16 19:59:41

标签: python csv

因此,我遇到了一个有趣的问题,这使我无法自拔。我有一个庞大的列表,其中包含150个长度为28的列表。这些小列表中的每一个看起来都像这样:

['A', '1', 'item', 'item', 'item', 'item', 'item', 'item', '', '', '', '', '', '', '', 'item', 'item', 'item plus text, hi there', 'item and more items', 'item ', 'item', '  item', 'item', 'item ', 'item', 'item', 'item', '']

值得指出的是,每个项目都是一个字符串,其中包含\ n字符,什么都没有,逗号等。每个列表中的前两个项目都类似于A 1,A 2,B 1等。csv文件的分隔符是|。字符。我遇到的问题是,当我尝试将此数据写回csv文件时,我要么只能将整个列表作为字符串放入每行的第一列(这意味着它看起来完全像我(已包含在上面)或将每个项目放在自己的行中。

理想情况下,我需要完成的工作是将大列表中的每个小列表放在自己的行中,并将小列表中的每个项目放在该行自己的单元格中。因此,每一行都将A-AB列用于一个列表。我尝试过的代码类似于:

with open("testFile.csv", "w") as csvfile:
    writer = csv.writer(csvfile, delimiter='|')
    for row in listOfRows: # Uses nested loops to access each item within
        for i in row:      # the small lists.
            writer.writerow([i])

我尝试了这种形式的变体,可以写出整个小列表项,但最终将每个小列表放在第一列的一个单元格中。任何人都对此有任何想法吗?

2 个答案:

答案 0 :(得分:1)

您应该能够使用csvwriter类的writerows函数来一次完成所有操作而无需循环。

with open("testFile.csv", "w") as csvfile:
    writer = csv.writer(csvfile, delimiter='|')
    writer.writerows(listOfRows)

答案 1 :(得分:1)

熊猫确实可以做到这一点,而无需您做任何事情。我将向您展示一个示例,其中您的列表只是重复的,这样您就可以利用a-ab列将每个列表排成一行(我想这就是您想要的):

import pandas as pd

a = [['A', '1', 'item', 'item', 'item', 'item', 'item', 'item', '', '', '', '', '', '', '', 'item', 'item', 'item plus text, hi there', 'item and more items', 'item ', 'item', '  item', 'item', 'item ', 'item', 'item', 'item', ''],
['A', '1', 'item', 'item', 'item', 'item', 'item', 'item', '', '', '', '', '', '', '', 'item', 'item', 'item plus text, hi there', 'item and more items', 'item ', 'item', '  item', 'item', 'item ', 'item', 'item', 'item', '']]

df = pd.DataFrame(a)

df.to_csv('./Desktop/goofy.csv', index=False, sep='|')

然后您的csv文件如下所示:

enter image description here

空白列对应于列表中的“”。