熊猫用引号中的转义引号阅读csv

时间:2018-07-11 15:51:04

标签: python pandas csv

设置

任务是使用熊猫(即pd.read_csv(filename))读取此csv:

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

但是实际上,它可以:

  • 阅读第一行没问题
  • 错误地读取第二行,但不会引发错误
  • 读取错误第三行失败

读取到 second 行的结果:

    title   description
0   Jeans   blue
1   Jeans   2 seam"

读取到第三行时出错:

  

ParserError:标记数据时出错。 C错误:应在行中输入4个字段   3,看到了5

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

1 个答案:

答案 0 :(得分:2)

默认情况下,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