Python的高效重复子串替换

Python的高效重复子串替换,python,string,replace,Python,String,Replace,如何有效地替换python中的子字符串,其中一个子字符串可能是另一个子字符串的一部分?例如: >>> "||||".replace("||","|X|") '|X||X|' # What I want: |X|X|X| 当然,我可以一直重复替换,直到字符串中不再有|的实例,但肯定有更好/更快的方法吗?通常,您需要重复该过程 但是,在这种特定情况下,您可以使用regexp在连续的符号之间插入X: import re print(re.sub("[|](?=[|])",

如何有效地替换python中的子字符串,其中一个子字符串可能是另一个子字符串的一部分?例如:

>>> "||||".replace("||","|X|")
'|X||X|'
# What I want: |X|X|X|

当然,我可以一直重复替换,直到字符串中不再有
|
的实例,但肯定有更好/更快的方法吗?

通常,您需要重复该过程

但是,在这种特定情况下,您可以使用regexp在连续的
符号之间插入
X

import re
print(re.sub("[|](?=[|])",
             "|X",
             "||||"))

意义是“用管子+ x替换任何管,如果后面是另一个管(但不认为它是匹配的一部分)”< /P> <代码>“→”。替换(“x”,“x”)++’< /代码>这样,这就给出了“x x x x x x”,它增加了一个额外的XIt,似乎更好地在重叠的子串替换之外重新调整你的目标。例如,在这里,您似乎希望在分隔符之间插入文本,因此对于单个

|
来说,类似于带有前瞻性和后向性断言的正则表达式替换将起作用。您希望
'aaaa'。替换('aaa',pony')
?输入中有两个重叠的
'aaa'
,但将它们全部替换是没有意义的。
“| | | | | |”。替换(“| |”,“| X | X”)。strip('X')