以未知编码读取包含非ASCII字符的文本文件

2024-04-26 11:14:45 发布

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

我想读取一个文件,其中还包含德语字符,而不仅仅是字符。我发现我可以这样做

  >>> import codecs
  >>> file = codecs.open('file.txt','r', encoding='UTF-8')
  >>> lines= file.readlines()

当我试图在Python IDLE中运行我的作业,但当我试图从其他地方运行它时,没有给出正确的结果,这是可行的。有主意吗?


Tags: 文件importtxt地方作业open字符utf
2条回答

你需要知道文本是用哪个字符编码的。如果您事先不知道,可以尝试使用chardet模块猜测它。首先安装:

$ pip install chardet

然后,例如以二进制模式读取文件:

>>> import chardet
>>> chardet.detect(open("file.txt", "rb").read())
{'confidence': 0.9690625, 'encoding': 'utf-8'}

那么:

>>> import codecs
>>> import unicodedata
>>> lines = codecs.open('file.txt', 'r', encoding='utf-8').readlines()

我相信文件被正确读取,但在输出时使用了错误的编码。这是基于这样一个事实,即您在空闲时得到了正确的结果。

我建议尝试使用print(line.encode('utf-8')),但我恐怕不知道Python 3是否会正确打印bytes对象。

相关问题 更多 >