[英]How to write a csv file line by line?
我正在嘗試從網站上抓取數據,並且已經從網站上收集了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()
使用csv:
import csv, itertools
rows = itertools.zip_longest(List1, List2, List3)
csvwriter.writerows(rows)
csv模塊會自動將包含逗號的字符串括在引號中,這樣會很好看。
編輯:
您可以遍歷行並使用writerow而不是writerows將其輸出,這將滿足您逐行執行此操作的要求。
編輯2:我已經確定答案。 itertools.zip_longest([List1, List2, List3])
應該是itertools.zip_longest(List1, List2, List3)
另外,您將需要在標題后添加換行符,以便使用Output_File.write("List1,List2,List3\\n")
而不是Output_File.write("List1,List2,List3")
使用熊貓:
import pandas as pd
df = pd.DataFrame([List1, List2, List3]).T
df.to_csv('your.csv', index=False)
熊貓會自動將包含逗號的字符串括在引號中,這樣會很好看。
在這種特殊情況下(換句話說,不是最一般的意義),在調用itertools.zip_longest()
時將List1
的第一個元素指定為fillvalue
參數似乎可以使它工作:
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"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.