用Python替换高效的重复子串

时间:2015-10-31 20:37:28

标签: python string replace

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

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

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

1 个答案:

答案 0 :(得分:3)

一般来说,你需要重复这个过程。

在这种特定情况下,您可以使用正则表达式在X个连续符号之间插入|

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

意思是“用管道替换任何管道+ X如果后面是另一个管道(但不认为它是匹配的一部分)”