我正在尝试从网站上抓取数据,并且已经从网站上收集了3种不同类型的信息。我在3个列表中有成千上万的记录,但为简单起见,我添加了一些记录。
List1 = ['DealerName']
List2 = ['Person1','Person2']
List3 = ['crisp nori, hot rice, and cold fish','takeout,fancy presentation, piled']
我必须逐行写一个输出 csv文件,其中包含3列(List1,List2,List3)和3列的列表信息。 'DealerName'对于所有记录都是恒定的。我遇到了麻烦,因为List3中的逗号分隔了各个列(不同单元格)中的信息。所需的输出文件应如下所示
感谢您的评论。根据其中一项评论,我对代码进行了一些修改,并尝试使用以下代码,但未提供所需的输出。
List1 = ['DealerName']
List2 = ['Person1','Person2']
List3 = ['crisp nori, hot rice, and cold fish','takeout,fancy presentation, piled']
Output_File = open("Output.csv", "w")
Output_File.write("List1,List2,List3")
import csv, itertools
rows = itertools.zip_longest([List1, List2, List3])
c = csv.writer(Output_File)
c.writerows(rows)
Output_File.close()
答案 0 :(得分:3)
使用csv:
ion-item
csv模块会自动将包含逗号的字符串括在引号中,这样会很好地阅读。
编辑:
您可以在行上循环并使用writerow而不是写行输出它们,这将满足您逐行执行此操作的要求。
修改2:
我已经解决了。 import csv, itertools
rows = itertools.zip_longest(List1, List2, List3)
csvwriter.writerows(rows)
应该是itertools.zip_longest([List1, List2, List3])
此外,您还希望在标题后添加换行符,以便用itertools.zip_longest(List1, List2, List3)
代替Output_File.write("List1,List2,List3\n")
答案 1 :(得分:2)
使用熊猫:
events.js:183
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE :::8081
at Server.setupListenHandle [as _listen2] (net.js:1360:14)
at listenInCluster (net.js:1401:12)
at Server.listen (net.js:1485:7)
at C:\projects\test\node_modules\metro\src\index.js:205:18
at new Promise (<anonymous>)
at Object.<anonymous> (C:\projects\test\node_modules\metro\src\index.js:204:12)
at Generator.next (<anonymous>)
at step (C:\projects\testnode_modules\metro\src\index.js:58:30)
at C:\projects\test\node_modules\metro\src\index.js:69:15
at <anonymous>
熊猫会自动将包含逗号的字符串括在引号中,这样会很好看。
答案 2 :(得分:1)
在这种特殊情况下(换句话说,不是最一般的意义),在调用List1
时将fillvalue
的第一个元素指定为itertools.zip_longest()
自变量看起来会像工作正常:
import csv, itertools
List1 = ['DealerName']
List2 = ['Person1','Person2']
List3 = ['crisp nori, hot rice, and cold fish', 'takeout,fancy presentation, piled']
with open("Output.csv", "w", newline="") as Output_File:
Output_File.write("List1,List2,List3\n")
writer = csv.writer(Output_File)
rows = itertools.zip_longest(List1, List2, List3, fillvalue=List1[0])
writer.writerows(rows)
此后output.csv
个文件的内容:
List1,List2,List3
DealerName,Person1,"crisp nori, hot rice, and cold fish"
DealerName,Person2,"takeout,fancy presentation, piled"