如何用正则分隔符实现|特殊拆分规则适配pandas.read_csv
适配pandas.read_csv的分隔符正则方案
规则与需求说明
- 待拆分样例字符串:
string = "1234|Google | Alphabet|pest||pp| |||r"
- 目标拆分结果:
[1234, "Google | Alphabet", "pest", "", "pp", " ", "", "", "r"]
- 核心拆分逻辑:
- 仅当
|符号左右两侧均为空格时,该|属于字段内容,不做拆分 - 其余所有位置的
|均作为分隔符处理
- 仅当
- 要求:正则可直接传入
pandas.read_csv的sep参数,无需额外手动处理逻辑。
可用正则表达式
(?<! )\||\|(?! )
正则逻辑说明
正则通过两种分支匹配所有需要作为分隔符的|:
(?<! )\|:匹配左侧不是空格的|\|(?! ):匹配右侧不是空格的|
两种分支取并集,刚好覆盖所有不满足「左右均为空格」的|,自动跳过左右都是空格的内容型|,完全匹配拆分规则。
pandas调用示例
注意使用正则作为分隔符时需要指定解析引擎为python(C引擎不支持正则分隔符):
import pandas as pd # 读取文件时直接传入正则即可 df = pd.read_csv( "your_target_file.csv", sep=r"(?<! )\||\|(?! )", engine="python" )
可先用re.split做效果验证:
import re res = re.split(r"(?<! )\||\|(?! )", string) print(res) # 输出:['1234', 'Google | Alphabet', 'pest', '', 'pp', ' ', '', '', 'r'],与预期结果完全一致
内容的提问来源于stack exchange,提问作者user_12
相关产品推荐
相关产品推荐

