当我用Python打开一个文件时,会感到困惑。顺便说一下,我用的是python3.4。你知道吗
首先它是一个日志文件(一个附加到任何时间的大文件),所以iconv
是不可能的。你知道吗
Info1file
是ASCII文本。你知道吗
demo git:master ❯ file 1.log
1.log: ASCII text, with very long lines
Info2ipython
以默认编码“UTF-8”打开它:
In [1]: f = open('1.log')
In [2]: f.encoding
Out[2]: 'UTF-8'
第一次强时
ERROR: 'utf-8' codec can't decode byte 0xb1 in position 6435: invalid start byte
当我open('1.log', encoding='ascii', mode='r')
我如何才能优雅地处理这个文件的每一行读取?你知道吗
这是我在github上的演示demo
我尝试了几种不同的编码组合,只需将脚本中的编码更改为
latin1
,就可以遍历日志文件,因此open('1.log', encoding='utf-8', mode='r')
行变成open('1.log', encoding='latin1', mode='r')
。你知道吗可能是WindowsCP1252或者拉丁语1。试着打开它:
看起来不是ascii文件。编码测试通常是不准确的。尝试chardet,它将为您检测编码。你知道吗
那么
请记住,这可能需要很长时间。在尝试之前,我建议您先手动循环使用明显的编码。你知道吗
尝试UTF16和UTF32。然后尝试Windows编码。Here is a list of several encodings.
相关问题 更多 >
编程相关推荐