如何打开ASCII文本

2024-09-28 03:12:13 发布

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

当我用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')

^{2}$

我如何才能优雅地处理这个文件的每一行读取?你知道吗

这是我在github上的演示demo


Tags: 文件in文本gitmasterlogdemoascii
3条回答

我尝试了几种不同的编码组合,只需将脚本中的编码更改为latin1,就可以遍历日志文件,因此open('1.log', encoding='utf-8', mode='r')行变成open('1.log', encoding='latin1', mode='r')。你知道吗

可能是WindowsCP1252或者拉丁语1。试着打开它:

open('1.log', encoding='latin-1', 'rU')

看起来不是ascii文件。编码测试通常是不准确的。尝试chardet,它将为您检测编码。你知道吗

那么

import chardet

filepointer = open(self.filename)
charset_detected = chardet.detect(filepointer.read())

请记住,这可能需要很长时间。在尝试之前,我建议您先手动循环使用明显的编码。你知道吗

尝试UTF16和UTF32。然后尝试Windows编码。Here is a list of several encodings.

相关问题 更多 >

    热门问题