2024-05-23 18:40:43 发布
网友
我有一个.txt文件,是UTF-8格式的,在将其读入Python时遇到问题。我有大量的文件和转换将是麻烦的。在
所以如果我在via上读到文件
for line in file_obj: ...
我得到以下错误:
我猜x.decode("utf-8")不会工作,因为错误发生在读入行之前。在
x.decode("utf-8")
有两种选择。
decode
bytes
第一种显然更简单。您不会显示如何打开文件,但假设您的代码如下所示:
with open(path) as file_obj: for line in file_obj:
这样做:
就这样。
正如the docs解释的那样,如果不在文本模式下指定编码:
The default encoding is platform dependent (whatever locale.getpreferredencoding() returns), but any encoding supported by Python can be used.
locale.getpreferredencoding()
在某些情况下(例如,任何具有适当配置的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: ...
否则python3使用abarner的solution
有两种选择。
decode
从bytes
到{第一种显然更简单。您不会显示如何打开文件,但假设您的代码如下所示:
这样做:
^{pr2}$就这样。
正如the docs解释的那样,如果不在文本模式下指定编码:
在某些情况下(例如,任何具有适当配置的OS X或linux),
locale.getpreferredencoding()
将始终是“UTF-8”。但很明显,它永远不会是“自动为我可能打开的任何文件选择合适的东西”。因此,如果知道一个文件是UTF-8,就应该显式地指定它。对于Python 2和3解决方案,请使用编解码器:
否则python3使用abarner的solution
相关问题 更多 >
编程相关推荐