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

问题描述 投票:0回答:1

我有一个csv文件,其中,分隔了我想用熊猫读取的列,即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个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.