使用非ASCII字符在Python中执行文件I / O.

时间:2011-01-20 21:26:10

标签: python google-app-engine file-io localization

我正在研究一个Python脚本,该脚本读取用UTF-8编码的XML文件,对其进行一些操作并将其保存到Google的数据存储区(它是一个App Engine程序)。

我正在阅读和解析文件的方式只是使用file.readline()和一些正则表达式。唯一的问题是我正在使用的文件中包含许多不同语言的字符,例如,它可能有é或Å或俄语或希腊字符。

我最初得到这样的错误:“UnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xd0:序数不在范围内(128)。”然后我尝试将打开的文件上的编码切换为“ISO-8859-15”,它消除了错误,但输出的字符没有正确显示。

所以我的问题是:如何在Python中使用UTF-8编码的文件,而不会让Python卡在文件中的所有特殊字符上?我希望这很清楚,并提前感谢任何建议。

3 个答案:

答案 0 :(得分:4)

str.decode

上指定UTF-8编码
>>> print '\xe2\x99\x9e'.decode('utf-8')
♞

这应该是一个国际象棋棋子,但它太小了,无法看到:)

答案 1 :(得分:1)

您说您将使用该文件的编码更改为ISO-8859-1。您是否尝试将其更改为UTF-8?

答案 2 :(得分:0)

要扩展答案并参考effbot,您可以像这样处理每一行:

raw = file.readline()
proc = raw.decode('utf-8')