我有一个类似csv的:
文件:
1;a;3;4
1;2;b;4
1;[a;b];3;4
像pd.from_csv(文件,sep=';'(一样加载
返回错误:
ParserError:标记数据时出错。C错误:行中应为4个字段3、锯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
regex演示