[英]Replace all occurrences of the substring using slicing when size of replacement string the differs from 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.