Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-查找子字符串,然后替换其中的所有字符_Python_Regex - Fatal编程技术网

Python-查找子字符串,然后替换其中的所有字符

Python-查找子字符串,然后替换其中的所有字符,python,regex,Python,Regex,假设我有这个字符串: <div>Object</div><img src=#/><p> In order to be successful...</p> 请注意,两个符号之间的每个字符都替换为#(包括空格) 这是我能得到的最接近的结果: r = re.sub('<.*?>', '<#>', string) r=re.sub(“”,,,字符串) 我的代码的问题是之间的所有字符都被一个替换,而我希望每个字

假设我有这个字符串:

<div>Object</div><img src=#/><p> In order to be successful...</p>
请注意,两个符号之间的每个字符都替换为
#
(包括空格)

这是我能得到的最接近的结果:

   r = re.sub('<.*?>', '<#>', string)
r=re.sub(“”,,,字符串)
我的代码的问题是
之间的所有字符都被一个
替换,而我希望每个字符都被一个
替换


我尝试了各种各样的背景资料,但都没有用。有人能给我指出正确的方向吗?

可以用一个函数代替,而不是一个新字符串来调用
re.sub
函数。每次匹配模式时,都会使用
match
对象调用函数,就像使用
re.search
re.finditer
一样

所以试试这个:

re.sub(r'<(.*?)>', lambda m: "<{}>".format("#" * len(m.group(1))), string)
re.sub(r'',lambda m:“.format(“#”*len(m.group(1))),字符串)

可以使用函数作为替换而不是新字符串来调用
re.sub
函数。每次匹配模式时,都会使用
match
对象调用函数,就像使用
re.search
re.finditer
一样

所以试试这个:

re.sub(r'<(.*?)>', lambda m: "<{}>".format("#" * len(m.group(1))), string)
re.sub(r'',lambda m:“.format(“#”*len(m.group(1))),字符串)
那……呢

def hashes(mo):
    replacing = mo.group(1)
    return '<{}>'.format('#' * len(replacing))
def散列(mo):
替换=生产任务组(1)
返回“”。格式(“#”*len(替换))
然后

r = re.sub(r'<(.*?)>', hashes, string)
r=re.sub(r'',散列,字符串)
使用函数作为
re.sub
的第二个参数的能力为您构建替换提供了极大的灵活性(并且,像往常一样,命名的
def
比任何狭窄的
lambda
产生的代码可读性要高得多——您可以使用有意义的名称、常规布局等).

那么

def hashes(mo):
    replacing = mo.group(1)
    return '<{}>'.format('#' * len(replacing))
def散列(mo):
替换=生产任务组(1)
返回“”。格式(“#”*len(替换))
然后

r = re.sub(r'<(.*?)>', hashes, string)
r=re.sub(r'',散列,字符串)

使用函数作为
re.sub
的第二个参数的能力为您构建替换提供了极大的灵活性(并且,像往常一样,命名的
def
比任何狭窄的
lambda
产生的代码可读性要高得多——您可以使用有意义的名称、常规布局等)答案是好的,但是如果我有
,它并不能取代两个符号之间的所有东西。我将编辑我的问题,将其包括在内。是的,好吧,这就是你的原因之一。答案很好,但如果我有
,它不会替换两个符号之间的所有内容。我将编辑我的问题以包含此内容。是的,好吧,这是您的原因之一。假设我有
,两个主要符号之间的字符不会被替换,我会有
,您能编辑吗?我将编辑我的问题。您的'`只匹配
'>'
中的
'
部分,因此当然额外的'
'不参与替换。也许你想要
是的,对于我当前使用的字符串,你的初始答案非常有效。。。可能不应该在我的问题中添加编辑部分,而只是保留它。后来我意识到我想要的是多么不可能。。。事实上,我想我会取消编辑。假设我有
,两个主要符号之间的所有字符都不会被替换,我会有
,你能编辑吗?我将编辑我的问题。您的'`只匹配
'>'
中的
'
部分,因此当然额外的'
'不参与替换。也许你想要
是的,对于我当前使用的字符串,你的初始答案非常有效。。。可能不应该在我的问题中添加编辑部分,而只是保留它。后来我意识到我想要的是多么不可能。。。事实上,我想我会取消编辑。
的预期输出是什么?这个
foo
输入的预期输出是什么?如果它只是空的,那么它们可以保持为空。。。这看起来比我最初计划的要复杂得多,如果我想做的事情无法解决,我会在下面选择一个答案,因为它们足够了。是的,正则表达式很难做到。
的预期输出是什么?这个
foo
输入的预期输出是什么?如果它只是空的,然后他们可以保持空。。。因此,它将保持不变。这似乎比我最初计划的更复杂,如果我想做的事情无法解决,我将在下面选择一个答案,因为它们足够了。是的,使用正则表达式很难做到。。