尝试将制表符分隔的文件读入 pandas 数据帧:
>>> df = pd.read_table(fn , na_filter=False, error_bad_lines=False)
它会出错,如下所示:
b'Skipping line 58: expected 11 fields, saw 12\n'
Traceback (most recent call last):
...(many lines)...
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc0 in position 115: invalid start byte
字节 0xc0 似乎在 utf-8 和 ascii 编码中都会造成痛苦。
>>> df = pd.read_table(fn , na_filter=False, error_bad_lines=False, encoding='ascii')
...(many lines)...
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc0 in position 115: ordinal not in range(128)
我也遇到了 csv 模块的阅读器同样的问题。
如果我将文件导入 OpenOffice Calc,它会被正确导入,列会被正确识别等。可能有问题的 0xc0 字节会被忽略。这不是数据等的重要部分,它可能只是生成该文件的系统的侥幸写入错误。如果涉及到这一点,我什至会很乐意砍掉他出现的那条线。我只想将文件读入python程序。这error_bad_lines=False
pandas 的选项应该可以解决这个问题,但没有骰子。此外,该文件不包含任何非英语脚本内容,这使得 unicode 变得非常必要。都是标准的英文字母和数字。我也尝试过 utf-16 utf-32 等,但它们只会导致更多的错误。
如何使python(特别是pandas Dataframe)读取具有一个或多个流氓字节0xc0字符的文件?