如何有效地替换python中的子串,其中一个子串可能是另一个子串的一部分?例如:
>>> "||||".replace("||","|X|")
'|X||X|'
# What I want: |X|X|X|
当然我可以继续重复替换,直到字符串中不再有||
的实例,但肯定会有更好/更快的方式吗?
答案 0 :(得分:3)
一般来说,你需要重复这个过程。
在这种特定情况下,您可以使用正则表达式在X
个连续符号之间插入|
:
import re
print(re.sub("[|](?=[|])",
"|X",
"||||"))
意思是“用管道替换任何管道+ X如果后面是另一个管道(但不认为它是匹配的一部分)”