pandas.read_csv() 如何排除特定的分隔符组合
pandas.read_csv() How to exclude specific separtor combinations
我有一个像这样的 csv:
文件:
1;a;3;4
1;2;b;4
1;[a;b];3;4
正在加载 pd.from_csv(file, sep=';')
returns 错误:
ParserError: Error tokenizing data. C error: Expected 4 fields in line
3, saw 5
因为 [a;b]
被视为分隔符。有没有办法在 [ ]
中排除 ;
谢谢
p.s。由于某些原因无法更改文件
您可以使用 ;(?![^\[]*\])
作为正则表达式分隔符以仅匹配不在括号内的分号:
pd.read_csv(filename, sep=r';(?![^\[]*\])', engine='python')
演示:
text = '''1;a;3;4
1;2;b;4
1;[a;b];3;4
'''
import io
import pandas as pd
pd.read_csv(io.StringIO(text), sep=r';(?![^\[]*\])', engine='python')
输出:
1 a 3 4
0 1 2 b 4
1 1 [a;b] 3 4
我有一个像这样的 csv:
文件:
1;a;3;4
1;2;b;4
1;[a;b];3;4
正在加载 pd.from_csv(file, sep=';')
returns 错误:
ParserError: Error tokenizing data. C error: Expected 4 fields in line 3, saw 5
因为 [a;b]
被视为分隔符。有没有办法在 [ ]
;
谢谢
p.s。由于某些原因无法更改文件
您可以使用 ;(?![^\[]*\])
作为正则表达式分隔符以仅匹配不在括号内的分号:
pd.read_csv(filename, sep=r';(?![^\[]*\])', engine='python')
演示:
text = '''1;a;3;4
1;2;b;4
1;[a;b];3;4
'''
import io
import pandas as pd
pd.read_csv(io.StringIO(text), sep=r';(?![^\[]*\])', engine='python')
输出:
1 a 3 4
0 1 2 b 4
1 1 [a;b] 3 4