[英]Python- find substring and then replace all characters within it
假设我有这个字符串:
<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
的第二个参数的功能为您建立替换提供了极大的灵活性(通常,命名的def
比任何狭窄的lambda
可读得多的代码-您可以使用有意义的名称,常规布局等)。
re.sub
函数可以用替换函数而不是新字符串来调用。 每次匹配模式时,都会使用一个match
对象调用该函数,就像使用re.search
或re.finditer
。
所以试试这个:
re.sub(r'<(.*?)>', lambda m: "<{}>".format("#" * len(m.group(1))), string)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.