我有以下正则表达式,我需要一些建议。我需要建议如何在不改变单词形式的情况下突出显示文本(大写保持大写)。我有一个我想强调的单词列表,所以我得到以下内容:
def tagText(self,listSearch,docText):
docText=docText.decode('utf-8')
for value in listSearch:
replace = re.compile(ur""+value+"", flags=re.IGNORECASE | re.UNICODE)
docText = replace.sub(u"""<b style="color:red">"""+value+"""</b>""", docText, re.IGNORECASE | re.UNICODE)
return docText
答案 0 :(得分:2)
您需要在替换字符串中使用占位符,而不是字面值。
def tag_text(self, items, text):
text = text.decode('utf-8')
for item in items:
text = re.sub(
re.escape(item),
ur'<b style="color:red">\g<0></b>',
text,
flags=re.IGNORECASE | re.UNICODE)
return text
print tag_text(None, ["foo", "bar"], "text with Foo and BAR")
# text with <b style="color:red">Foo</b> and <b style="color:red">BAR</b>
(我也稍微清理了你的功能,使它看起来更像“pythonic”)。