我正在尝试在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]] )


但是我在行中得到'enveloppes'然后在另一行中查询而不是一行中的所有字符串
谁能帮我 ?
我的csv文件应包含两行,一行用于“ Enveloppes Esquisse adh \ xe9sives”,另一行用于“ 1,85”

最佳答案

该文件说:


  csv模块不直接支持读写Unicode,
  但是它是8位纯净的,保存了ASCII NUL的一些问题
  字符。因此,您可以编写处理以下内容的函数或类
  只要您避免像
  使用NUL的UTF-16。建议使用UTF-8。


因为您的字符串是cp1250cp1252(我无法从示例中分辨出)编码的字节字符串,而不是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)

09-25 17:48
查看更多