Python正则匹配错误:仅当Equipment onsite为空时替换为分号
问题根源
原有正则会匹配所有,Equipment onsite=字符串,无论该字段后是否存在内容,因此会统一执行替换,不符合仅空字段替换的要求。
修复方案
通过正则的零宽正向预查规则,限定仅当Equipment onsite=后紧跟字段分隔符逗号或行结束符(即字段无有效值)时,才触发替换操作。
修正后的代码如下:
import pandas as pd data = pd.read_csv("TestEquipmentOnsite.csv", header=0) # (?=,|$)为零宽正向预查,仅匹配后面紧跟逗号或行尾的场景,即Equipment onsite字段为空 data = data.replace(r",Equipment onsite=(?=,|$)", ";", regex=True) print(data)
可选优化
如果业务规则中空白字符(空格、制表符等)也判定为空值,可将正则调整为r",Equipment onsite=\s*(?=,|$)",即可覆盖字段仅含空白内容的场景。
内容的提问来源于stack exchange,提问作者Lowell Lowellcraft
相关产品推荐
相关产品推荐

