[英]Python3 avoid quoting and extra lines at the end of the csv file
我試圖根據先前創建和連接的列表內容創建CSV文件。 關鍵是我的所有行記錄都在每行的開頭和結尾都用雙引號引起來。 另外,在文件末尾,我得到了一條額外的白線。
碼:
with open('/tmp/'+filename,"w", newline='') as output:
writer = csv.writer(output)
for item in update_records:
row = '{},{},{}'.format(item['field1'],item['field2'],item['field3'])
#print(row)
writer.writerow([row])
output.close()
電流輸出:
我努力了:
writer = csv.writer(output, quotechar='', quoting=csv.QUOTE_MINIMAL)
但是我收到如下錯誤:
如果啟用了報價,則必須設置quotechar
非常感謝您的支持。
這里是使用DictWriter的答案,但是基於數據結構的大量猜測工作。 甚至有更簡單的編寫方法,例如,將它們作為字典列表。
import csv
update_records = [
{
"field1": "field1",
"field2": "en",
"field3": "field3"
},
{
"field1": "field1",
"field2": "de",
"field3": "field3"
}
]
filename = "test.csv"
with open('/tmp/'+filename,"w", newline='') as output:
# Define header, needed even if not written when using DictWriter
header = ["field1", "field2", "field3"]
writer = csv.DictWriter(output, fieldnames=header)
# Optional write the header
# writer.writeheader()
for item in update_records:
row = {}
# Only provide the fields 1 to 1 that are present in the header.
# There are plenty of cooler ways to do this, but hope this is clearer.
for head in header:
row[head] = item[head]
# print(row)
writer.writerow(row)
輸出是這樣的(/tmp/test.csv)(末尾有一個空行,但是不知道如何將其顯示為代碼的一部分,因此添加了EOF):
field1,en,field3
field1,de,field3
EOF
writerow應該將字段列表作為參數:
with open('/tmp/'+filename,"w", newline='') as output:
writer = csv.writer(output)
for item in update_records:
row = [item['field1'],item['field2'],item['field3']]
#print(row)
writer.writerow(row)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.