【问题标题】:Pandas csv parser not working properly when it encounters `"`Pandas csv解析器遇到`"`时无法正常工作
【发布时间】:2021-08-10 22:38:14
【问题描述】:

问题陈述:

最初我所拥有的

我有一个包含以下记录的 CSV 文件:-

data.csv:-

 id,age,name
 3500300026,23,"rahul"
 3500300163,45,"sunita"
 3500320786,12,"patrick"
 3500321074,41,"Viper"
 3500321107,54,"Dawn Breaker"

当我尝试使用编码“ISO-8859-1”对此运行 script.py 时,它运行良好

# script.py
import pandas as pd
test_data2=pd.read_csv('data.csv', sep=',', encoding='ISO-8859-1')
print(test_data2)


现在我有什么:-

但是当我在每条记录的前面收到带有" 的同一文件的提要时,解析器的行为就很尴尬。数据更改后,新记录如下:-

id,age,name
"3500300026,23,"rahul"
"3500300163,45,"sunita"
"3500320786,12,"patrick"
"3500321074,41,"Viper"
"3500321107,54,"Dawn Breaker"

在为这个新数据文件运行相同的脚本 (script.py) 后,我得到以下结果

字符 " 仅属于 ISO-8859-1 字符集,因此无论如何这都不是问题。应该是解析器,不明白为什么解析器不只关注,,我专门将它作为分隔符传递给read_csv()。

参考:ISO-8859-1 Character set

我很想知道 pandas 无法正确解析它的原因,或者它与" 有什么特殊联系。

【问题讨论】:

  • 这不是一个有效的 csv 文件,每行开头都有不匹配的 "。这个“饲料”坏了。这与字符编码无关。谁提供该提要,请询问他们如何获取有效的 csv 数据。
  • 问题是有一个开始",但似乎没有结束"。那里的起始报价是什么?它是身份证的一部分吗?如果 " 是字段 & 的一部分,也用作引号字符,那么它必须被转义(这似乎没有发生)。 pandas 行为正常,您的 csv 数据文件不正常。
  • 感谢@O.Jones 和@Haleenmur 解决了我的问题。我可以看到数据已损坏,但我们有一些字段即使出现"(双引号)也没关系,它希望解析器只解析,而不检查任何内容。
  • 正如我在代码中明确提到的 , 作为分隔符,所以我不希望 " 对我的数据造成任何问题,只要我为每个值设置编码字符

标签: python pandas character-encoding csv-parser


【解决方案1】:

您可以通过向 read_csv 添加参数来告诉 pandas 您不希望对双引号进行特殊处理:

  test_data2=pd.read_csv('data.csv', quoting=csv.QUOTE_NONE)

read_csv()。输出将是:

In [11]: df
Out[11]: 
            id  age            name
0  "3500300026   23         "rahul"
1  "3500300163   45        "sunita"
2  "3500320786   12       "patrick"
3  "3500321074   41         "Viper"
4  "3500321107   54  "Dawn Breaker"

只解析逗号。

【讨论】:

  • 你在哪里使用quoting 变量。你能指点我那里吗
  • 你忘了提到 csv 是一个要导入的库,但是 nps 。非常感谢您的帮助:)
猜你喜欢
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-20
  • 2017-04-30
  • 2021-11-25
相关资源
最近更新 更多