Форум сайта python.su
1
Есть список подстрок, необходимо сделать подсветку искомой подстроки. Делаю с помощью regexp:
import re text_list = [u"spam ham jam spamer", u"spam"] pattern = re.compile(ur"(\bspam\w*)", re.I | re.U) start_str = u'{start}' end_str = u'{end}' out = [] for item in text_list: for match in re.finditer(pattern, item): out.append(u"".join( [item[0:match.start()], start_str, item[match.start():match.end()], end_str, item[match.end():]])) for i in out: print i
{start}spam{end} ham jam spamer spam ham jam {start}spamer{end} {start}spam{end}
{start}spam{end} ham jam {start}spamer{end} {start}spam{end}
Отредактировано to_night (Фев. 23, 2015 16:18:40)
Офлайн
857
>>> import re >>> >>> text_list = [u"spam ham jam spamer", u"spam"] >>> pattern = re.compile(ur"\bspam\w*", re.I | re.U) >>> >>> start_str = u'{start}' >>> end_str = u'{end}' >>> >>> tr = lambda m: start_str + m.group() + end_str >>> >>> out = [pattern.sub(tr, t) for t in text_list] >>> out [u'{start}spam{end} ham jam {start}spamer{end}', u'{start}spam{end}'] >>>
Отредактировано py.user.next (Фев. 23, 2015 18:22:04)
Офлайн
1
Отлично работает. Спасибо.
Офлайн