这不是与double quoted elements in csv cant read with pandas相同的问题。
区别在于,这个问题是:“ ABC,DEF”正在破坏代码。
在这里,“ ABC“ DE”,F“破坏了代码。
整个字符串应解析为'ABC“ DE”,F'。相反,内部双引号导致了下面提到的问题。
我正在使用包含以下条目类型的csv文件:
header1,header2,header3,header4
2001-01-01,123456,“ abc def”,V4
2001-01-02,789012,“ ghi“ jklm” n,op“,V4
第二行数据正在破坏代码,出现以下错误:
ParserError: Error tokenizing data. C error: Expected 4 fields in line 1234, saw 5
我尝试使用各种sep
,delimiter
和quoting
等参数,但似乎无济于事。
有人可以帮忙吗?谢谢!
答案 0 :(得分:0)
根据您在此处提供的两行,有一个选项,其中将文本文件读入Series
对象,然后通过Series.str.extract()
使用正则表达式提取以在{{ 1}}:
DataFrame
with open('so.txt') as f:
contents = f.readlines()
s = pd.Series(contents)
现在如下所示:
s
现在,您可以使用正则表达式提取将所需的内容放入
0 header1, header2, header3,header4\n
1 \n
2 2001-01-01,123456,"abc def",V4\n
3 \n
4 2001-01-02,789012,"ghi "jklm" n,op",V4
:
DataFrame
df = s.str.extract('^([0-9]{4}-[0-9]{2}-[0-9]{2}),([0-9]+),(.+),(\w{2})$')
# remove empty rows
df = df.dropna(how='all')
如下所示:
df
,您可以使用
0 1 2 3
2 2001-01-01 123456 "abc def" V4
4 2001-01-02 789012 "ghi "jklm" n,op" V4