【问题标题】:reading csv file with delimiter inside a field with several double quotes在带有多个双引号的字段内读取带有分隔符的 csv 文件
【发布时间】:2020-08-14 19:10:08
【问题描述】:

我有一个 csv 文件,其中 , 分隔我想用 pandas 读取的列,即 df = pd.read_csv("myfile.csv",sep=',',dtype=str,encoding='utf-8')。列有多种类型,但我想将所有内容都读取为字符串。以下形式的一行会导致读者在该行中看到比预期更多的列:

# column 1, column 2, column 3, ...
46745,"\\"\\"\\"blabla\\"\\" a, b bli\\"\\"more bla.\\"\\" bl blu \\"\\"bli bla blub\\"\\"\\"","something else",...

有些字段,如这里的第二列和第三列,是用双引号引起来的。第二个字段与其他双引号字段的不同之处在于它包含多个引号,因此当解析器到达, 时,它没有意识到它实际上仍然在它应该识别的引号内,因为最后的引号字符应该后跟分隔符。有趣的是,当您传递engine='python' 时,解析器实际上识别出了这一点,但并没有得出引用还没有完成的结论,而是抛出了错误',' expected after '"'

我尝试了关键字参数quotingquotecharsepengine 的各种组合。一切都无济于事。

编辑:根据要求提供示例

import io
s = 'column1,column2,column3\n3463,hello,"more, stuff"\n46745,"\\"\\"\\"blabla\\"\\" a, b bli\\"\\"more bla.\\"\\" bl blu \\"\\"bli bla blub\\"\\"\\"","something else"'
df = pd.read_csv(io.StringIO(s),sep=',',dtype=str,encoding='utf-8')

如果你注释掉最后一行,它会起作用。

【问题讨论】:

  • 您能否分享具有有效列数的数据样本?

标签: python pandas csv quotes


【解决方案1】:

通常,字段中的引号会用另一个引号 (") 转义,这可能是解析器的默认设置。

在这种情况下,您可能需要使用escapechar = '\\'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-11
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    相关资源
    最近更新 更多