Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用非ASCII字符在Python中执行文件I/O_Python_Google App Engine_File Io_Localization - Fatal编程技术网

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

使用非ASCII字符在Python中执行文件I/O,python,google-app-engine,file-io,localization,Python,Google App Engine,File Io,Localization,我正在编写一个Python脚本,该脚本读取一个用UTF-8编码的XML文件,对其进行一些操作,并将其保存到Google的数据存储(这是一个应用程序引擎程序) 我读取和解析文件的方式就是使用file.readline()和一些正则表达式。唯一的问题是,我正在处理的文件中有来自许多不同语言的字符,例如,它可能有一个é或Å或俄语或希腊语字符 一开始我遇到了这样的错误:“UnicodeDecodeError:“ascii”编解码器无法解码位置0:ordinal不在范围(128)中的字节0xd0。”然后我

我正在编写一个Python脚本,该脚本读取一个用UTF-8编码的XML文件,对其进行一些操作,并将其保存到Google的数据存储(这是一个应用程序引擎程序)

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

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


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

str.decode

>>> print '\xe2\x99\x9e'.decode('utf-8')
♞

这应该是一个棋子,但它太小了,看不见:)

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

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

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

您的模式和字符串是否要搜索unicode字符串?是的-就像在中一样,我没有用正则表达式搜索任何特殊字符。@Nick,您的意思是什么;)@搅拌我?我说了什么吗?当我使用decode函数时,它有时会工作,但我也会得到一个Unicode解码错误。我该如何消除这种情况?这意味着您的输入不符合您指定的编码,在本例中为UTF-8。你确定是UTF-8吗?确切的错误信息是什么?