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