繁体   English   中英

我想使用 python 从字符串中替换交替出现的 substring

[英]I want to replace alternate occurrences of a substring from a string using python

我有一个字符串。 我想用新的 substring 替换每个备用 substring ,以便在下面的字符串中,第一次和第三次出现的xx应该更改为rr

#------------------------------------------------------ 
import re
str1="abcxxhghxxjjhxxjjhj"
cnt=0
for i in re.finditer("xx",str1):
    cnt=cnt+1    
    if cnt%2!=0:
        print(cnt)
        l=i.span()[0]
        m=i.span()[1]
        print(l,m)
        str1=re.sub(str1[l:m],"rr",str1)
    
print(str1)

预期 output: abcrrhghxxjjhrrjjhj

我们实际上可以通过一次调用re.sub来处理这个问题:

str1 = "abcxxhghxxjjhxxjjhj"
output = re.sub(r'xx(.*?)(xx|$)', r'rr\1\2', str1)
print(output)  # abcrrhghxxjjhrrjjhj

策略是查找xx后跟最近的xx ,然后将第一个xx替换为rr ,留下剩余的内容。 以下是正则表达式模式的解释:

xx      match 'xx'
(.*?)   match and capture all content up until
(xx|$)  the nearest next 'xx' OR the end of the input

然后,我们替换为rr\1\2 ,仅将前导xx更改为rr

这应该工作:

for i in re.finditer("xx",str1):
    cnt=cnt+1    
    if cnt%2!=0:
        str1 = str1[:i.start()] + "rr" + str1[i.start() + 2:]

使用 re.finditer 索引对字符串进行切片

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM