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')
返回:
我的名字是灌木罗杰。我布置、设计和销售灌木。
我想退回原件:
我的名字是灌木罗杰。我布置、设计和销售灌木。
抱歉,我是个菜鸟。任何帮助将不胜感激。
最佳答案
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)
关于python - 如何使用 re.IGNORECASE 和 .sub 保留大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5625317/