Python可以从文件中读取nonascii文本吗?

2024-05-23 18:40:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.txt文件,是UTF-8格式的,在将其读入Python时遇到问题。我有大量的文件和转换将是麻烦的。在

所以如果我在via上读到文件

for line in file_obj:
    ...

我得到以下错误:

^{pr2}$

我猜x.decode("utf-8")不会工作,因为错误发生在读入行之前。在


Tags: 文件intxtobjfor格式错误line
2条回答

有两种选择。

  1. 指定打开文件时的编码,而不是使用默认值。在
  2. 以二进制模式打开文件,并显式地decodebytes到{}。在

第一种显然更简单。您不会显示如何打开文件,但假设您的代码如下所示:

with open(path) as file_obj:
    for line in file_obj:

这样做:

^{pr2}$

就这样。

正如the docs解释的那样,如果不在文本模式下指定编码:

The default encoding is platform dependent (whatever locale.getpreferredencoding() returns), but any encoding supported by Python can be used.

在某些情况下(例如,任何具有适当配置的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

相关问题 更多 >