我正在尝试通过从.csv
提取数据来创建Oracle DB
文件。
而且,我需要用file
字符分隔thorn
。
错误是:
Its outside the range 128.
我有什么方法可以使用csv
创建multibyte delimiter
?
答案 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