【发布时间】:2013-07-08 11:41:52
【问题描述】:
我在从 csv 读取 unicode 字符时遇到问题。 csv 文件最初包含带有 unicode 标签的元素:
"[u'Aeron\xe1utica']""[u'Ni\u0161']"-
"[u'K\xfcnste']"...
我必须从中删除 u'' 标签以提供 csv
Aeron\xe1uticaNi\u0161-
K\xfcnste....
现在我想读取 csv 并将其输出到包含字符的文件中,即
AeronáuticaNiš-
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])
我也试过 codecs.open('','','UTF-8') 进行读写,但没有帮助
【问题讨论】:
-
不,您确实不需要需要删除
u。这些是 Unicode 值,您想要 unicode 值。 -
当读取带有编码字符的 CSV 文件时,为什么不使用
UnicodeReader? -
澄清一下:
[u'Aeron\xe1utica']是文件中的文字 - 如果不是 - 是什么? -
@MartijnPieters 有必要删除它们。我在电子表格中删除了它们。
-
@KBhokray:然后你在创建电子表格时做错了。您正在查看
repr()字符串表示形式,这是一种调试辅助工具。将列表转换为字符串时(例如打印时),所有内容都显示为repr()值,这是一个str值,表示每个元素的实际内容。