簡體   English   中英

使用python將帶逗號的文本寫入CSV文件中的單元格

[英]Write text with comma into a cell in CSV file using python

我想用逗號將文本寫入 CSV 文件的單元格中。

輸入

'1,2,3,Hello'

CSV 格式的輸出應該是

'1,2,3','Hello'

使用正確的CSV 編寫器

>>> import csv
>>> spamWriter = csv.writer(open('eggs.csv', 'wb'))
>>> spamWriter.writerow(['Spam', 'Lovely, Spam'])

輸出:

垃圾郵件,“可愛的,垃圾郵件”

這不是特定於 Python 的,而是與CSV“標准”有關。

如果你想寫一個控制字符作為你的值的一部分,你需要通過用雙引號將它括起來來轉義該值:

f.write('1,2,3,45,"The Next comma I want to write and not separate to another cell, so this sentence will be whole",6,7,8')

編輯:盡管在實踐中,最好使用其他人建議的 CSV 編寫器界面。 當有一個現成的庫可以為您抽象出來時,將自己卷入實現細節絕不是一個好主意。

文件的每一行都是一條數據記錄。 每條記錄由一個或多個字段組成,以逗號分隔。

用逗號分隔字段的基本思想很清楚,但是當字段數據也可能包含逗號甚至嵌入式換行符時,這個想法就變得復雜了。

CSV 實現可能不處理此類字段數據,或者它們可能使用引號將字段括起來。 -- 來自https://en.wikipedia.org/wiki/Comma-separated_values

因此,您可以使用引號將每個字段文本括起來。

假設輸入是['1,2,3', 'Hello'] ,CSV 的輸出應該是"1,2,3", "Hello" ,你可以使用下面的代碼來實現。

>>> ",".join('"{0}"'.format(s) for s in ['1,2,3', 'Hello'])
'"1,2,3","Hello"'

但是當文本中出現"\n等特殊符號時就會遇到問題。

python csv 庫已經為您處理了所有邊緣情況。

寫入文件

可以使用@Dominic Rodger 的回答。

>>> import csv
>>> spamWriter = csv.writer(open('eggs.csv', 'wb'))
>>> spamWriter.writerow(['Spam', 'Lovely, Spam'])

寫入字符串

來自https://stackoverflow.com/a/9157370/5238892

在 Python 3 中:

>>> import io
>>> import csv
>>> output = io.StringIO()
>>> csvdata = [1,2,'a','He said "what do you mean?"',"Whoa!\nNewlines!"]
>>> writer = csv.writer(output, quoting=csv.QUOTE_NONNUMERIC)
>>> writer.writerow(csvdata)
59
>>> output.getvalue()
'1,2,"a","He said ""what do you mean?""","Whoa!\nNewlines!"\r\n'

Python 2 需要稍微更改一些細節:

>>> output = io.BytesIO()
>>> writer = csv.writer(output)
>>> writer.writerow(csvdata)
57L
>>> output.getvalue()
'1,2,a,"He said ""what do you mean?""","Whoa!\nNewlines!"\r\n'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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