Pandas 2.0.3中用正则删除AA前的|失败,求排查错误原因
问题分析与解决
你的正则表达式失效的核心原因是竖线|在正则语法里是特殊元字符,它代表“逻辑或”的含义,而你实际要匹配的是原字符串里的普通竖线分隔符。未转义的情况下,正则会把|(?=AA)错误解析成「匹配空字符串,或者匹配后面紧跟AA的位置」,自然达不到预期效果。
修正后的代码
只需要把正则里的|转义成\|,让正则将其当作普通字符处理:
import pandas as pd df = pd.DataFrame({'data': ['10SGD01|AA169|10SGD01|AA170']}) df['data'] = df['data'].str.replace('\|(?=AA)', '', regex=True) print(df)
运行结果
data 0 10SGD01AA169|10SGD01AA170
这样就能精准匹配到AA前面的竖线并删除,得到你想要的结果。
内容的提问来源于stack exchange,提问作者irina_ikonn
相关产品推荐
相关产品推荐

