Csv UnicodeDecodeError:&x27;charmap';编解码器可以';t解码7240位置的字节0x8d:字符映射到<;未定义>;

Csv UnicodeDecodeError:&x27;charmap';编解码器可以';t解码7240位置的字节0x8d:字符映射到<;未定义>;,csv,python-3.x,pandas,decode,python-import,Csv,Python 3.x,Pandas,Decode,Python Import,我是做硕士论文的学生。作为我论文的一部分,我正在使用python。我正在读取.csv格式的日志文件,并以格式良好的方式将提取的数据写入另一个.csv文件。但是,当读取文件时,出现以下错误: 回溯(最近一次调用上次):文件 “C:\Users\SGADI\workspace\DAB\u Trace\my\u code\Trace\u parcer.py”,第19行, 对于行内读取器: 文件“C:\Users\SGADI\Desktop\Python-32bit-3.4.3.2\Python-3.

我是做硕士论文的学生。作为我论文的一部分,我正在使用python。我正在读取
.csv
格式的日志文件,并以格式良好的方式将提取的数据写入另一个
.csv
文件。但是,当读取文件时,出现以下错误:

回溯(最近一次调用上次):文件 “C:\Users\SGADI\workspace\DAB\u Trace\my\u code\Trace\u parcer.py”,第19行, 对于行内读取器:

  • 文件“C:\Users\SGADI\Desktop\Python-32bit-3.4.3.2\Python-3.4.3\lib\encodings\cp1252.py”, 第23行,在解码返回
    编解码器.charmap\u解码(输入、自身错误、解码表)[0]
  • UnicodeDecodeError:“charmap”编解码器无法解码位置7240中的字节0x8d:字符映射到
我搜索了这个特殊的角色,但没有找到任何。我在互联网上搜索了建议更改格式的内容:我尝试了ut8、latin1和其他一些格式,但仍然出现了这个错误。你能帮我解决熊猫的问题吗。我也试过使用
pandas
,但仍然出现错误。 我甚至删除了日志文件中的一行,但错误发生在下一行

请帮我找到解决方案,谢谢。

我已经解决了这个问题。 我们可以使用这个代码

import codecs
types_of_encoding = ["utf8", "cp1252"]
for encoding_type in types_of_encoding:
    with codecs.open(filename, encoding = encoding_type, errors ='replace') as csvfile:
        your code
        ....
        ....

我只需在open()中添加一个参数就解决了这个问题


请发布报告(打开('test_log_20150325_gps.csv','rb')。阅读(7290)[7190:])。这将向我们显示第7240字节周围的CSV文件的一些内容。使用它,我们可以猜测可能的编解码器是什么。当我发布上面的命令b'XPMSG\u OPCODE\u SET\u CONTROL\u FLAGS\u CMD时,我在控制台中得到了这个结果;;;;;;;;;RR=2 OP=DAB\U NXPMSG\U OPCODE\U SET\U CONTROL\U FLAGS\U CMD CAVisibil'此处不一致,因为您发布的
报告中没有字节
'\x8d'
。您可以发布
测试日志\u 20150325\u gps.csv
?这是文件的链接
import codecs
types_of_encoding = ["utf8", "cp1252"]
for encoding_type in types_of_encoding:
    with codecs.open(filename, encoding = encoding_type, errors ='replace') as csvfile:
        your code
        ....
        ....
with open('input.tsv','rb') as f:
for ln in f:
    decoded=False
    line=''
    for cp in ('cp1252', 'cp850','utf-8','utf8'):
        try:
            line = ln.decode(cp)
            decoded=True
            break
        except UnicodeDecodeError:
            pass
    if decoded:
        # use 'line'
with open(filename, encoding = 'cp850') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')