我想读取一个包含German 而不仅仅是 characters的文件。我发现我可以这样做
>>> import codecs
>>> file = codecs.open('file.txt','r', encoding='UTF-8')
>>> lines= file.readlines()
当我尝试在 Python IDLE 中运行我的工作时,这是有效的,但是当我尝试从其他地方运行它时不会给出正确的结果。有想法吗?
您需要知道文本是用哪种字符编码进行编码的。如果您事先不知道,可以尝试使用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()
我相信文件被正确读取,但在输出时使用了错误的编码。这是基于您在 IDLE 中获得正确结果的事实。
我建议尝试使用print(line.encode('utf-8'))
,但恐怕我不知道 Python 3 是否会bytes
正确打印对象。