【发布时间】:2011-06-06 17:51:07
【问题描述】:
我一直在 StackOverflow 中阅读有关在 Python 中从 Unicode 转换为 CSV 的所有问题,但我仍然迷路了。每次我收到“UnicodeEncodeError: 'ascii' codec can't encode character u'\xd1' in position 12: ordinal not in range(128)”
buffer=cStringIO.StringIO()
writer=csv.writer(buffer, csv.excel)
cr.execute(query, query_param)
while (1):
row = cr.fetchone()
writer.writerow([s.encode('ascii','ignore') for s in row])
row的值为
(56, u"LIMPIADOR BA\xd1O 1'5 L")
其中数据库中 \xd10 的值为 ñ,一个带有变音符号的 n,用于西班牙语。起初我尝试将值转换为在 ascii 中有效的值,但在浪费了这么多时间之后,我试图只忽略这些字符(我想重音元音也会有同样的问题)。
我想将值保存到 CSV,最好使用 ñ(“LIMPIADOR BAÑO 1'5 L”),但如果不可能,至少能够保存它(“LIMPIADOR BAO 1'5 L”) ")。
【问题讨论】:
-
最后更新了问题。
-
为什么不尝试编码到本地 Windows 'ANSI' 代码页?我猜您使用的是 Windows,因为 CSV 最常用于 Windows,但如果这超出了标准,请忽略我。在 *NIX 操作系统上,我想 8 位 ISO 编码中的一种是合适的,但我不是专家。
标签: python unicode csv ascii diacritics