Python如何删除指定子串及后续数字且不影响其他位置数字
实现代码
直接用正则匹配你需要删除的完整片段,一次性替换即可,不需要拆分字符串再逐个处理:
import re somestring = "Zero function argument 1 since code 345 and from code 8476 then it goes on" # 匹配所有符合「since code 数字」或「from code 数字」的片段替换为空 res = re.sub(r'(since|from) code \d+', '', somestring) # 合并替换后产生的连续空格、去除首尾空格 res = ' '.join(res.split()) print(res)
运行后输出:
Zero function argument 1 and then it goes on
原理解释
- 正则规则
(since|from) code \d+只会命中你指定要删除的两类完整片段:(since|from)匹配两种前缀\d+匹配任意长度的可变数字- 不会匹配到
argument 1这类不命中前缀规则的数字
- 替换后用
' '.join(res.split())处理空格,既可以把替换后产生的连续空格合并为单个空格,也能自动清除首尾多余空格,不会出现空字符串的问题
原代码问题说明
你原来的实现是先删掉了since code和from code文本,把后面的数字单独留在了字符串里,后续全量替换所有数字的操作自然会误伤argument 1里的1,同时替换文本时没有处理相邻空格,拆分后就会出现大量空字符串。
内容的提问来源于stack exchange,提问作者Gravity Mass
相关产品推荐
相关产品推荐

