python / Pandas : how to read a csv in cp1252 with a first row to delete?

标签 python pandas csv

解决方案:

查看答案,它不是用 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 文件

screen du début de file_T

问题是它有两个特征一起引发问题:

  • 第一行不是标题

  • 标题“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)

我得到以下输出(与 header=0 相同): the read_csv error on file_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-16utf-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/

相关文章:

python - 在 Excel 工作表中处理数据框输出

python - 在 Python 中将字典转换为 Pandas

python - 使用 Python CSV 模块读取带有 BOM 的 UTF-8 会导致不需要的额外字符

python - REST api 中的普通(非 HTML)错误页面

python - 类型错误 : open() takes 0 positional arguments but 2 were given

Python:比较两组并将结果写入第三组

python - pandas 中数据框的聚合函数

python - 需要对 Python 中的几个 CSV 文件中的每一行进行数学运算

c# - FieldConverter ConverterKind.Date "dd/MM/yyyy"异常

python - 为什么 [False] 中的 False==False 返回 True?