3

示例 如果用户搜索“汽车”,我希望输出看起来像

今天找到您最喜欢的汽车,接下来 2 天的汽车销售。

请注意,汽车是粗体的。谷歌做到了: 在此处输入图像描述

在 Python 中执行此操作的最佳方法是什么?粗体在 HTML 中。

4

3 回答 3

6
>>> 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

于 2012-08-01T18:06:46.090 回答
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"
>>>
于 2012-08-01T18:44:33.283 回答
1

字符串替换方法非常好用,可以替换搜索词的所有实例:

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

如果要保留原始的大写/小写,请使用 re 模块:

import re
s3 = re.sub(r'(CARS)', r'<b>\1</b>', s, flags=re.IGNORECASE)
于 2012-08-01T18:15:21.443 回答