我正在尝试写入 csv 文件,我的列表中有两个值 [string,int],这是我的代码
prod = [['Enveloppes Esquisse adh\xe9sives', 1.85],
['Enveloppes adh\xe9sives Esquisse', 1.1],
['Enveloppes adh\xe9sives Esquisse', 1.1],
['Enveloppes adh\xe9sives Esquisse', 1.85],
['Pochettes kraft Esquisse', 0.95],
['Pochettes kraft Esquisse', 1.75]]
cw = csv.writer(open("nv.csv", 'w'), delimiter=';')
cw.writerow(['Produit', 'Prix'])
for row in prod:
cw.writerow( [row[0],row[1]] )
但我在行中得到“信封”,然后在另一行中得到esquisse,而不是一行中的所有字符串 谁能帮我 ? 我的 csv 文件应包含两行,一行代表“Enveloppes Esquisse adh\xe9sives”,另一行代表“1,85”
最佳答案
文档说:
The csv module doesn’t directly support reading and writing Unicode, but it is 8-bit-clean save for some problems with ASCII NUL characters. So you can write functions or classes that handle the encoding and decoding for you as long as you avoid encodings like UTF-16 that use NULs. UTF-8 is recommended.
由于您的字符串是 cp1250
或 cp1252
(我无法从示例中看出)编码的字节字符串而不是 unicode 字符串,所以应该没问题。您应该以二进制模式打开文件:
import io
import csv
prod = [['Enveloppes Esquisse adh\xe9sives', 1.85],
['Enveloppes adh\xe9sives Esquisse', 1.1],
['Enveloppes adh\xe9sives Esquisse', 1.1],
['Enveloppes adh\xe9sives Esquisse', 1.85],
['Pochettes kraft Esquisse', 0.95],
['Pochettes kraft Esquisse', 1.75]
]
with io.open('nv.csv', 'wb') as f:
writer = csv.writer(f, delimiter=';')
writer.writerow(['Produit', 'Prix'])
for row in prod:
writer.writerow(row)
关于python - 使用python写入csv文件时如何处理字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18481986/