繁体   English   中英

在带有多个双引号的字段内读取带有分隔符的 csv 文件

[英]reading csv file with delimiter inside a field with several double quotes

我有一个 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 '"'

我为关键字 arguments 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')

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM