使用python在csv文件中编写时如何处理字符串

时间:2013-08-28 07:40:58

标签: python csv

enter image description here我正在尝试用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'

1 个答案:

答案 0 :(得分:1)

文件说:

  

csv模块不直接支持读写Unicode,   但是对于ASCII NUL的一些问题,它是8位清除   字符。所以你可以编写处理函数的函数或类   只要你避免像编码一样编码和解码   使用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)