15

我想读取一个包含German 而不仅仅是 characters的文件。我发现我可以这样做

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

当我尝试在 Python IDLE 中运行我的工作时,这是有效的,但是当我尝试从其他地方运行它时不会给出正确的结果。有想法吗?

4

2 回答 2

23

您需要知道文本是用哪种字符编码进行编码的。如果您事先不知道,可以尝试使用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()
于 2012-06-18T16:33:32.360 回答
0

我相信文件被正确读取,但在输出时使用了错误的编码。这是基于您在 IDLE 中获得正确结果的事实。

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

于 2012-06-18T17:28:09.003 回答