假设我有这个字符串:
<div>Object</div><img src=#/><p> In order to be successful...</p>
我想替换 <
之间的每个字母和 >
用#
.
所以,经过一些操作,我希望我的字符串看起来像:
<###>Object<####><##########><#> In order to be successful...<##>
请注意,两个符号之间的每个字符都被替换为 #
(包括空格)。
这是我能得到的最接近的:
r = re.sub('<.*?>', '<#>', string)
我的代码的问题是 <
之间的所有字符和 >
被单个 #
取代,而我希望将每个单独的字符替换为 #
.
我尝试了各种反向引用的混合,但无济于事。有人能指出我正确的方向吗?
最佳答案
那...呢:
def hashes(mo):
replacing = mo.group(1)
return '<{}>'.format('#' * len(replacing))
然后
r = re.sub(r'<(.*?)>', hashes, string)
使用 函数 作为 re.sub
的第二个参数的能力为您构建替换提供了巨大的灵 active (并且,像往常一样,一个命名的 def
产生的代码比任何狭窄的 lambda
都更具可读性——您可以使用有意义的名称、正常布局等)。
关于Python-查找子字符串然后替换其中的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28017450/