這裏的工作例如,但請注意,如有人評論,這在Excel中不可讀。
import csv
elements = [['Last1, First1','City, State',12345,'111-22-3333','Embedded|Quote'],
['Last2, First2','City, State',12345,'111-22-3333','Embedded|Quote'],
['Last3, First3','City, State',12345,'111-22-3333','Embedded|Quote'],
['Last4, First4','City, State',12345,'111-22-3333','Embedded|Quote']]
with open('out.csv', 'w', newline='') as fp:
writer = csv.writer(fp,delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL, lineterminator='\n')
writer.writerows(elements)
with open('out.csv') as fp:
print(fp.read())
with open('out.csv', 'r', newline='') as fp:
reader = csv.reader(fp, quotechar='|')
for line in reader:
print(line)
輸出:
|Last1, First1|,|City, State|,12345,111-22-3333,|Embedded||Quote|
|Last2, First2|,|City, State|,12345,111-22-3333,|Embedded||Quote|
|Last3, First3|,|City, State|,12345,111-22-3333,|Embedded||Quote|
|Last4, First4|,|City, State|,12345,111-22-3333,|Embedded||Quote|
['Last1, First1', 'City, State', '12345', '111-22-3333', 'Embedded|Quote']
['Last2, First2', 'City, State', '12345', '111-22-3333', 'Embedded|Quote']
['Last3, First3', 'City, State', '12345', '111-22-3333', 'Embedded|Quote']
['Last4, First4', 'City, State', '12345', '111-22-3333', 'Embedded|Quote']
如果你真的想打開.csv
Excel文件,使用默認參數dialect
。你encoding='utf-8-sig'
還支持非ASCII字符,並且還提供了字節順序標記(BOM)簽名Excel需要正確讀取的.csv:
#! coding=utf8
import csv
elements = [['Last1, First1','City, State',12345,'111-22-3333','Embedded"Quote'],
['多路能, 馬克','City, State',12345,'111-22-3333','Embedded"Quote'],
['Last3, First3','City, State',12345,'111-22-3333','Embedded"Quote'],
['Last4, First4','City, State',12345,'111-22-3333','Embedded"Quote']]
with open('out.csv', 'w', encoding='utf-8-sig', newline='') as fp:
writer = csv.writer(fp)
writer.writerows(elements)
with open('out.csv','rb') as fp:
print(fp.read().decode())
with open('out.csv', 'r', encoding='utf-8-sig', newline='') as fp:
reader = csv.reader(fp)
for line in reader:
print(line)
輸出:
"Last1, First1","City, State",12345,111-22-3333,"Embedded""Quote"
"多路能, 馬克","City, State",12345,111-22-3333,"Embedded""Quote"
"Last3, First3","City, State",12345,111-22-3333,"Embedded""Quote"
"Last4, First4","City, State",12345,111-22-3333,"Embedded""Quote"
['Last1, First1', 'City, State', '12345', '111-22-3333', 'Embedded"Quote']
['多路能, 馬克', 'City, State', '12345', '111-22-3333', 'Embedded"Quote']
['Last3, First3', 'City, State', '12345', '111-22-3333', 'Embedded"Quote']
['Last4, First4', 'City, State', '12345', '111-22-3333', 'Embedded"Quote']
將quotechar設置爲您的應用程序使用的引用機制 - 很可能是默認的'「' – ch3ka 2014-10-19 17:41:00
您可以舉一個例子嗎?將代碼與列表'[['a','b,c','d '],[1,2,3]]'帶有分隔符'',''和'QUOTE_MINIMAL',它對我來說非常合適,爲什麼不適合你? – 2014-10-19 17:49:57
@RayToal在MS Excel中打開文件後,將看到b和c在不同的列上,然後嘗試使用Tim Pietzcker的解決方案 (在MS Excel 2007上測試) – 2014-10-19 17:53:49