【问题标题】:Pandas reading csv with a escaped quote in a quotePandas 读取 csv 并在引用中使用转义引用
【发布时间】:2018-12-19 17:50:22
【问题描述】:

设置

任务是用 Pandas 读取这个 csv(即pd.read_csv(filename)):

title,description
Jeans,"blue"
Jeans,"2\" seam"
Jeans,"2\" seam, blue"

代码来试试这个

import os
import pandas as pd

with open("/tmp/test.csv", "w") as f:
    f.write('''title,description
Jeans,"blue"
Jeans,"2\" seam"
Jeans,"2\" seam, blue"
''')

pd.read_csv("/tmp/test.csv")

问题

预期输出:

    title   description
0   Jeans   blue
1   Jeans   2" seam
2   Jeans   2" seam, blue

但实际上它可以:

  • 读第一行没问题
  • 读错第二行但不报错
  • 第三行读取失败,出现错误

读取到第二行的结果:

    title   description
0   Jeans   blue
1   Jeans   2 seam"

读取到第三行时出错:

ParserError:标记数据时出错。 C 错误:预期有 4 个字段在行 3、锯5

这似乎是一个常见问题。 Pandas read_csv 中是否有可以处理这个问题的配置?

【问题讨论】:

  • 你认为答案是什么?
  • 向问题添加了预期输出

标签: python pandas csv


【解决方案1】:

默认情况下,the escapechar is None。要将反斜杠指定为用于转义分隔符的单字符字符串(例如双引号),请使用 escapechar='\\'

In [23]: pd.read_csv('data', escapechar='\\')
Out[23]: 
   title    description
0  Jeans           blue
1  Jeans        2" seam
2  Jeans  2" seam, blue

【讨论】:

  • 奇怪。这实际上对我不起作用。您可以使用我在上面发布(编辑)的代码 sn-p 试试吗?我仍然遇到同样的错误。
  • @foobar:检查/tmp/test.csv的内容。您会看到转义的双引号被 Python 解析为纯双引号,因此写入文件的字符串不包含反斜杠。要修复您的示例代码,请将多行字符串更改为 raw 多行字符串:例如r'''title,...''' 而不是 '''title,...'''
  • 太棒了,明白了!谢谢!
猜你喜欢
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 2019-10-31
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 2016-05-05
相关资源
最近更新 更多