Python中如何替换搜索字符串最后一次出现的指定内容
替换字符串最后一个逗号为&的Python实现
原代码问题说明
你写的正则r", \w$"会匹配字符串末尾的「逗号+空格+单个字符」整体,替换时把最后一个字符也一并替换掉了,所以才会丢失末尾的d。
1. 正则实现方案
使用正向预查匹配最后一个逗号的位置,不会消耗逗号后面的内容:
import re mystring = "a, b, c, d" # 正则匹配后面没有其他逗号的「逗号+空格」 result = re.sub(r', (?=[^,]*$)', ' & ', mystring) print(result) # 输出:a, b, c & d
正则逻辑说明:(?=[^,]*$)是正向肯定预查,限定当前匹配的, 后面只能出现非逗号字符直到字符串结束,确保匹配到的是最后一个逗号加空格。
2. 非正则实现方案
用rsplit从字符串右侧分割一次,再拼接即可,逻辑更简单性能更高:
mystring = "a, b, c, d" # 从右侧按`, `分割1次,拆分后用` & `拼接 result = ' & '.join(mystring.rsplit(', ', 1)) print(result) # 输出:a, b, c & d
内容的提问来源于stack exchange,提问作者kame
相关产品推荐
相关产品推荐

