2012-08-01 112 views
2

如果用戶搜索「汽車」,我想輸出看起來像粗體搜索文本

找到自己喜歡的今天,汽車出售接下來的2天。

請注意,汽車是粗體。谷歌這樣做: enter image description here

什麼是最好的方式去做這個在Python?粗體是HTML。

回答

4
>>> the_string = "New Cars, Used Cars, Car Reviews, Car Finance Advice - Cars.com" 
>>> re.sub(r'(car)', r'<b>\1</b>', the_string, flags=re.I) 
'New <b>Car</b>s, Used <b>Car</b>s, <b>Car</b> Reviews, <b>Car</b> Finance Advice - <b>Car</b>s.com' 

儘管找出應該算作「汽車」的一個實例有點棘手,這會使「汽車香椿」等。你可以嘗試\b(cars?)\b這個特定的短語;一般而言,您可能需要使用stemmer

1

替換字符串的方法是非常容易使用,並取代搜索單詞的所有實例:

s = 'New Cars, Used Cars, Other Cars' 
s2 = s.replace('Cars', '<b>Cars</b>') 

如果你想保持原來的上/下的情況下,使用重新模塊:

import re 
s3 = re.sub(r'(CARS)', r'<b>\1</b>', s, flags=re.IGNORECASE) 
2
>>> import re 
>>> the_string = "New Cars, Used Cars, Car Reviews, Car Finance Advice - Cars.com" 
>>> word = 'cars' 
>>> toreplace = "<span class='highlight' STYLE='color:black'>\g<0></span>" 
>>> pattern = re.compile(re.escape(word), re.I) 
>>> highlighted_txt = re.sub(pattern,toreplace,the_string) 
>>> highlighted_txt 
"New <span class='highlight' STYLE='color:black'>Cars</span>, Used <span class='highlight' STYLE='color:black'>Cars</span>, Car Reviews, Car Finance Advice - <span class='highlight' STYLE='color:black'>Cars</span>.com" 
>>>