簡體   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