如何在使用re.IGNORECASE和.sub时保留大小写?
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。我负责安排、设计和销售灌木。
抱歉,我完全是个新手。任何帮助都非常感谢。
2 个回答
0
给 .sub()
传递一个函数,这个函数会返回合适的替换内容,或者查看第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)