[英]Is it possible for Python to read non-ascii text from file?
我有一个UTF-8格式的.txt文件,并且有将其读入Python的问题。 我有大量的文件,转换会很麻烦。
所以如果我在via中读取文件
for line in file_obj:
...
我收到以下错误:
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 291: ordinal not in range(128)
我猜x.decode("utf-8")
不起作用,因为错误发生在甚至读入行之前。
有两种选择。
bytes
到str
显式decode
。 第一个显然是更简单的一个。 您没有显示如何打开文件,但假设您的代码如下所示:
with open(path) as file_obj:
for line in file_obj:
做这个:
with open(path, encoding='utf-8') as file_obj:
for line in file_obj:
而已。
正如文档所解释的那样,如果您没有在文本模式中指定编码:
默认编码取决于平台(无论
locale.getpreferredencoding()
返回),但可以使用Python支持的任何编码。
在某些情况下(例如,任何OS X或具有适当配置的linux), locale.getpreferredencoding()
将始终为“UTF-8”。 但它显然永远不会“自动对任何我可能打开的文件的权利”。 因此,如果您知道文件是UTF-8,则应明确指定它。
对于Python 2和3解决方案,请使用编解码器:
import codecs
file_obj = codecs.open('ur file', "r", "utf-8")
for line in file_obj:
...
否则 - Python 3 - 使用abarnert的解决方案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.