[英]Python/Pandas : how to read a csv in cp1252 with a first row to delete?
请参见答案,它不是在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'
更新:以字节为单位的前三行输出:
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:我知道我可以为此制作VBA程序或其他东西,但我宁愿不这样做。 我有兴趣将其包含在我的Python程序中,或者希望确定它是不可能的。
CP1252是普通的旧拉丁语代码页 ,它确实支持所有西欧口音。 如果文件是用该代码页编写的,则不会出现乱码。
您发布的数据的图像就是图像。 它没有说明文件的原始格式。 它是UTF8文件吗? UTF-16? 绝对不是 CP1252。
UTF8和CP1252均不会产生NAN。 任何单字节代码页至少会读取数字,这意味着文件以多字节编码保存。
开头的两个奇怪字符看起来像字节顺序标记。 如果检查Wikipedia的BOM表条目,您将看到ÿþ
是ÿþ
的BOM表。
尝试使用utf-16
或utf-16-le
代替cp1252
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.