Python正则表达式替换:替换引号内内容并忽略双引号转义场景
解决Python正则替换带转义双引号的CSV字段问题
直接上可行方案:用正则精准匹配被双引号包裹、且内部包含转义双引号("")的字段,再统一替换为DUMMY:
import re text = """4056,"Wholesale, Operations","Performed some ""activities"", at 10 am. ",19/12/2022,,"a,B" """ result = re.sub(r'"(?:[^"]|"")*"', 'DUMMY', text) print(result)
运行后输出与预期完全一致:
4056,DUMMY,DUMMY,19/12/2022,,DUMMY
正则表达式解析
":匹配字段开头的双引号(?:[^"]|"")*:非捕获分组,负责匹配字段内部内容:[^"]:匹配任何非双引号的普通字符"":匹配CSV规则中转义的双引号(两个连续双引号)*:允许上述两种内容重复任意次数,确保覆盖整个字段
":匹配字段结尾的双引号
这个正则严格遵循CSV的转义规则,不会把字段内部的""误判为字段结束标记,能准确识别完整的带转义引号的字段。
内容的提问来源于stack exchange,提问作者QPeiran
相关产品推荐
相关产品推荐

