我使用以下行將一些資訊寫入逗號分隔的 CSV 檔案。
f = open(output_file, 'w', newline='')
wr = csv.writer(f)
...
f.write(str(n) "," str(key) "\n" )
問題是這key是一個可能包含“,”的字串,這會導致最終的 CSV 檔案有超過 2 列,而我想將整個檔案key寫成單列。
我知道wr.writerow([key])將整個鍵寫在一列中,但我想對write(). 有什么辦法解決這個問題嗎?
uj5u.com熱心網友回復:
write()是與打開的檔案物件關聯的方法。
writerow()是與 csvwriter 物件關聯的方法。
雖然您的問題表明您希望write()函式生成結果,但不清楚為什么您覺得需要使用該f.write()方法來完成此任務。您嘗試做的事情通常由我處理,csv.writer()我將提供一些關于如何完成結果的指導,writerow()以防萬一它可以幫助您實作看似理想的最終目標。
import csv
n1 = 'n'
key1 = 'alpha_key,beta_key'
n2 = 42
key2 = 'no_comma_in_this_key'
這將創建一個指向可在磁盤上寫入的打開檔案的檔案句柄。
f = open('myfile.csv', 'w')
這將創建一個 writer 物件,該物件可以在幕后使用該檔案 (f) 將行寫入檔案。
wr = csv.writer(f)
為簡單起見,將創建適合一行的元素作為串列中的一對字串。
row = [str(n1), str(key1)]
將使用 csv 撰寫器的先天能力來創建行(使用適當的引號字符來封裝錯誤的逗號)。
wr.writerow(row)
我們可以用第二組資料復制這些步驟,以展示它如何處理不包含逗號的鍵。
row = [str(n2), str(key2)]
wr.writerow(row)
當我們完成檔案時,我們應該 close() 它,以便緩沖區中的任何資料都將寫入磁盤(注意:帶有背景關系管理器的更好,但為簡單起見,使用這種方法)。
f.close()
輸出看起來像這樣,并顯示了 csv 規范如何通過在具有嵌套逗號的列值周圍加上引號來處理其中可能包含逗號的列。
n,"alpha_key,beta_key"
42,no_comma_in_this_key
總而言之,代碼如下所示:
import csv
n1 = 'n'
key1 = 'alpha_key,beta_key'
n2 = 42
key2 = 'no_comma_in_this_key'
f = open('myfile.csv', 'w')
wr = csv.writer(f)
row = [str(n1), str(key1)]
wr.writerow(row)
row = [str(n2), str(key2)]
wr.writerow(row)
f.close()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/412113.html
標籤:
上一篇:如何根據行值將函式應用于資料框
