解决方案:
查看答案,它不是用 CP1252 编码的,而是用 UTF-16 编码的。解决方案代码是:
import pandas as pd
df = pd.read_csv('my_file.csv', sep='\t', header=1, encoding='utf-16')
也适用于 encoding='utf-16-le'
更新:前 3 行字节的输出:
In : import itertools
...: print(list(itertools.islice(open('file_T.csv', 'rb'), 3)))
Out : [b'\xff\xfe"\x00D\x00u\x00 \x00m\x00e\x00r\x00c\x00r\x00e\x00d\x00i\x00 \x000\x005\x00 \x00j\x00u\x00i\x00n\x00 \x002\x000\x001\x009\x00 \x00a\x00u\x00 \x00m\x00e\x00r\x00c\x00r\x00e\x00d\x00i\x00 \x000\x005\x00 \x00j\x00u\x00i\x00n\x00 \x002\x000\x001\x009\x00\n', b'\x00"\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\n', b'\x00C\x00o\x00d\x00e\x00 \x00M\x00C\x00U\x00\t\x00I\x00m\x00m\x00a\x00t\x00r\x00i\x00c\x00u\x00l\x00a\x00t\x00i\x00o\x00n\x00\t\x00D\x00a\x00t\x00e\x00\t\x00h\x00e\x00u\x00r\x00e\x00\t\x00V\x00i\x00t\x00e\x00s\x00s\x00e\x00\t\x00L\x00a\x00t\x00i\x00t\x00u\x00d\x00e\x00\t\x00L\x00o\x00n\x00g\x00i\x00t\x00u\x00d\x00e\x00\t\x00T\x00y\x00p\x00e\x00\t\x00E\x00n\x00t\x00r\x00\xe9\x00e\x00\t\x00E\x00t\x00a\x00t\x00\n']
我正在处理原始格式为 :
的 csv 文件问题是它有两个特征一起引发问题:
第一行不是标题
标题“Entrée”中有重音符号,如果我不精确编码 cp1252 会引发 UnicodeDecode 错误
我正在使用 Python 3.X 和 pandas 来处理这些文件。
但是当我尝试用这段代码阅读它时:
import pandas as pd
df_T = pd.read_csv('file_T.csv', header=1, sep=';', encoding = 'cp1252')
print(df_T)
为了正确读取 csv,我需要:
- 去掉口音
- 并忽略/删除第一行(反正我不需要)。
我怎样才能做到这一点?
PS : I know I could make a VBA program or something for this, but I'd rather not. I'm interested in including it in my Python program, or in knowing for sure that it is not possible.
最佳答案
CP1252 是普通的 Latin codepage ,它确实支持所有西欧口音。如果文件是用那个代码页写的,就不会出现乱码。
您发布的数据图像就是图像。它没有说明文件的原始格式。它是UTF8文件吗? UTF16?这绝对不是 CP1252。
UTF8 和 CP1252 都不会产生 NAN。 任何单字节代码页至少会读取数字,这意味着文件以多字节编码保存。
开头的两个奇怪的字符看起来像字节顺序标记。如果你检查 Wikipedia's BOM entry您会看到 ÿþ
是 UTF16LE 的 BOM。
尝试使用 utf-16
或 utf-16-le
而不是 cp1252
关于 python / Pandas : how to read a csv in cp1252 with a first row to delete?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56967744/