![](/img/trans.png)
[英]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.