簡體   English   中英

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

[英]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.searchre.finditer

所以試試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM