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

regex demo