在带有多个双引号的字段中读取带有分隔符的 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')。列有多种类型,但我想将所有内容都作为字符串读取。以下表格的一行导致 reader 在该行中看到比预期更多的列:

# 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')

如果您注释掉最后一行,就可以了。

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

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