因此,我遇到了一个有趣的问题,这使我无法自拔。我有一个庞大的列表,其中包含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])
我尝试了这种形式的变体,可以写出整个小列表项,但最终将每个小列表放在第一列的一个单元格中。任何人都对此有任何想法吗?
答案 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文件如下所示:
空白列对应于列表中的“”。