引号内的python分隔符导致错误标记化

2024-05-28 19:35:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.csv文件,其中包含以下数据:

....
"4", "mercedes", "BLT254", "Arkis-UDV GmbH, Berlin, Oberweg", "2007"
"5", "bmw", "SUV873", "Meier Auto", "2013"
....

我试着通过read_csv阅读:

data = pd.read_csv("Auszug_2020.csv", sep = ",", encoding = "ISO-8859-1", quotechar = '"')

每个数据块都包装在一个“”中。在引号中,有时会出现分隔符“”。这是个问题!我想我可以通过使用quoechar='“'来解决这个问题,不幸的是它仍然不起作用

ParserError:将数据标记化时出错。C错误:在saw 7的第4行中应该有5个字段

我做错了什么

编辑: 糟糕!我刚意识到编码是“utf-16”。现在一切都正常了。 请原谅我,我再也不会说你的坏话了


Tags: 文件csv数据readautomercedesgmbhberlin
2条回答

使用pd.read_csv方法中的可选参数skipinitialspace=True跳过分隔符,后面的空格,这将产生所需的结果:

data = pd.read_csv(
    "Auszug_2020.csv", sep=",", encoding="ISO-8859-1",
    quotechar='"', skipinitialspace=True)

根据您共享的示例数据,您是否可以尝试这样读取它:

df = pd.read_csv("sample.csv", header=None, sep='", "')
df.iloc[:, 0] = df.iloc[:, 0].str.replace('"', '')
df.iloc[:,-1] = df.iloc[:,-1].str.replace('"', '')

我对它进行了如下测试:

创建了一个包含4条记录的示例csv文件:

"4", "mercedes", "BLT254", "Arkis-UDV GmbH, Berlin, Oberweg", "2007"
"5", "bmw", "SUV873", "Meier Auto", "2013"
"4", "mercedes", "BLT254", "Arkis-UDV GmbH, Berlin, Oberweg", "2007"
"5", "bmw", "SUV873", "Meier Auto", "2013"

要测试的代码:

import pandas as pd

df = pd.read_csv("sample.csv", header=None, sep='", "')
df.iloc[:, 0] = df.iloc[:, 0].str.replace('"', '')
df.iloc[:,-1] = df.iloc[:,-1].str.replace('"', '')

print(df)

输出:

   0         1       2                                3     4
0  4  mercedes  BLT254  Arkis-UDV GmbH, Berlin, Oberweg  2007
1  5       bmw  SUV873                       Meier Auto  2013
2  4  mercedes  BLT254  Arkis-UDV GmbH, Berlin, Oberweg  2007
3  5       bmw  SUV873                       Meier Auto  2013

相关问题 更多 >

    热门问题