0

我有以下正则表达式,我需要一些关于它的建议。我需要建议如何在不更改单词形式的情况下突出显示文本(大写以保持大写)。我有一个我喜欢强调的单词列表,所以我得到了以下内容:

  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
4

1 回答 1

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”)。

于 2012-06-06T21:03:15.390 回答