我在从csv读取unicode字符时遇到问题。csv文件最初包含带有unicode标记的元素:
"[u'Aeron\xe1utica']"
"[u'Ni\u0161']"
"[u'K\xfcnste']"
... 在我不得不从中删除u''标签,以提供一个csv
Aeron\xe1utica
Ni\u0161
K\xfcnste
.... 在现在我想读取csv并将其输出到一个包含字符的文件中
Aeronáutica
Niš
Künste
.... 在我尝试在csv docs中使用UnicodeWriter,但它给出的输出与第二个列表相同
以下是我在阅读和写作方面所做的:
c = open('foo.csv','r')
r = csv.reader(c)
for row in reader:
p = p + row
#The elements in p were ['Aeron\\xe1utica', 'Ni\\u0161', 'K\\xfcnste'...]
c = open('bar.csv','w')
c.write(codecs.BOM_UTF8)
writer = UnicodeWriter(c)
for row in p:
writer.writerow([row])
我也试过了编解码器.打开('','','UTF-8')用于阅读和写作,但没有帮助
似乎您已经将Python列表直接写入CSV文件,结果是
[...]
文本语法,而不是普通的列。然后,您删除了可以再次将信息转换回具有unicode字符串的Python列表的大部分信息。剩下的是pythonicode文本,但没有引号。使用
unicode_escape
再次将值解码为Unicode:或者添加
^{pr2}$u'..'
引号,使用三重引号字符串,以避免需要转义嵌入的引号:如果您仍然有原始文件(带有
[u'...']
格式的行),请使用ast.literal_eval()
函数将这些返回到Python列表中。在这里使用CSV模块毫无意义:演示
unicode_escape
:相关问题 更多 >
编程相关推荐