gpt4 book ai didi

python - Pandas 读取问题,位置 0 为 0xff

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:21 24 4
gpt4 key购买 nike

我使用 Windows 命令行程序 (samtools.exe) 生成了一个巨大的 (6G) txt 文件:

.\samtools.exe mpileup -O bamfile.bam > txtfile.tsv

生成的文件实际上是一个tab分隔的表格。当我尝试使用 pandas.read_table 打开它时,它给了我:
UnicodeDecodeError:“utf-8”编解码器无法解码位置 0 中的字节 0xff:起始字节无效

当我尝试打印文件的第一行时,它是这样的:
ÿþAL645882 473 N 1 ^!c I 1
除第一个字符外,一切正常。如果我使用 'rb' 读取它,确实第一个字符是 0xff

我真的很想把这个表作为一个 pandas DataFrame 来读取,文件很大,有没有办法让 python 忽略 0xff 字节?或者干脆删除文件中的字节?

提前致谢!

最佳答案

这看起来像是一个被误解的 UTF-16 BOM header :

In [25]: with open("tmp.csv", "wb") as fp:
...: fp.write("a,b\n1,2".encode("utf-16"))
...:

In [26]: open("tmp.csv", "rb").read().decode("latin-1")
Out[26]: 'ÿþa\x00,\x00b\x00\n\x001\x00,\x002\x00'

In [27]: print(open("tmp.csv", "rb").read().decode("latin-1"))
ÿþa,b
1,2

因此您可以尝试将其解释为 UTF-16:

In [29]: pd.read_csv("tmp.csv")
[...]
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

In [30]: pd.read_csv("tmp.csv", encoding='utf-16')
Out[30]:
a b
0 1 2

(如果它真的只是导致问题的前两个字节,例如打开文件指针并读取两个字节,你可以做其他的黑客攻击,但我怀疑如上例如,文件中的空字节不是很明显,因此最好使用正确的编码。)

关于python - Pandas 读取问题,位置 0 为 0xff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45066118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com