使用utf-8分隔符创建.csv文件

时间:2015-07-03 10:52:33

标签: python python-2.7 csv multibyte

我正在尝试通过从.csv提取数据来创建Oracle DB文件。 而且,我需要用file字符分隔thorn

错误是:

Its outside the range 128.

我有什么方法可以使用csv创建multibyte delimiter

2 个答案:

答案 0 :(得分:0)

您确实可以使用csv模块编写UTF-8字符串,但不能将包含非ASCII字符的unicode字符串传递给csv编写器。 writerow(row)函数的doc说明:一行必须是Writer对象的字符串或数字序列,以及将字段名称映射到字符串或数字的字典(首先将它们传递给str()< / strong>)用于DictWriter对象。 (重点是我的)。 因此,您必须首先编码值:

writer.writerow([ val.encode('utf8') if isinstance(val, unicode) else val for val in row ])

同样的分隔符不要使用unicode字符串,而是使用编码的字符串:将thorn用作分隔符:

wr = csv.writer(fd, delimiter = u'\xfe'.encode('utf8'))

答案 1 :(得分:0)

在latin1编码中,刺字符þ只有一个字节,因此以下使用Python 2.7.10为我工作:

# -*- coding: latin1 -*-

import csv

with open('unitest.csv', 'wb') as csvfile:
    writer = csv.writer(csvfile, delimiter='þ')
    writer.writerow([1,2,3,'a','b','c'])

创建的csv文件的内容:

1þ2þ3þaþbþc