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')
返回:
我的名字是 roger the shrubber 。我安排,设计和销售灌木丛。
我想回复原案:
我的名字是 Roger the Shrubber 。我安排,设计和销售灌木丛。
抱歉,但我是一个总菜鸟。任何帮助将不胜感激。
答案 0 :(得分: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)
答案 1 :(得分:0)
将函数传递给.sub()
,而不是返回相应的替换,或者查看组#0。