簡體   English   中英

如何逐行寫一個csv文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM