2011-04-11 13 views
2
import re 

def bold_partial(long_string, partial): 

    replacer = re.compile(partial, re.IGNORECASE) 
    new_long_string = replacer.sub('<b>' + partial + '</b>', long_string) 
    print new_long_string 


bold_partial('My name is Roger the Shrubber. I arrange, design, and sell shrubberies.', 'roger the shrubber') 

返回:
我的名字是羅傑的shrubber。我安排,設計和銷售灌木叢。如何使用re.IGNORECASE和.sub保存大小寫?

我想回到原來的情況:

我的名字是羅傑的Shrubber。我安排,設計和銷售灌木叢。

對不起,但我是一個總noob。任何幫助將不勝感激。

回答

4
def bold_partial_rep(matchobj): 
    return '<b>' + matchobj.group(0) + '</b>' 

def bold_partial(long_string, partial): 
    replacer = re.compile(partial, re.IGNORECASE) 
    new_long_string = replacer.sub(bold_partial_rep, long_string) 
    print new_long_string 

或者,如果你想縮短代碼,你可以擺脫新的功能,並使用下面的行bold_partial()

new_long_string = replacer.sub(lambda m: '<b>%s</b>' % m.group(0), long_string) 
+0

好快啊!謝謝! – travyo 2011-04-11 18:05:02

+0

對不起,我不能投票給你。我沒有15的聲望。 :( – travyo 2011-04-11 18:05:56

0

將函數傳遞給.sub(),它返回相應的替換,或者查看組#0。

相關問題