Python の文字列ハイライト機能
サジェストのハイライト機能をPython側で実装
import re # 前方一致 def hilight_apply_pre(word, _list): return [re.sub('^{}'.format(re.escape(word)), '<{0}>{1}</{0}>'.format('em', word), l, 1) for l in _list] # 部分一致 def hilight_apply_sub(word, _list): return [re.sub('{}'.format(re.escape(word)), '<{0}>{1}</{0}>'.format('em', word), l, 0) for l in _list]
suggest_list = [ 'アイフォン', 'アイフォーン', 'アイアイ', 'あいさつ', ] p1 = 'アイ' p2 = 'アイフ' print('hilight_apply_pre(p1, suggest_list)', hilight_apply_pre(p1, suggest_list)) print('hilight_apply_sub(p1, suggest_list)', hilight_apply_sub(p1, suggest_list)) print('hilight_apply_pre(p2, suggest_list)', hilight_apply_pre(p2, suggest_list)) print('hilight_apply_sub(p2, suggest_list)', hilight_apply_sub(p2, suggest_list))
hilight_apply_pre(p1, suggest_list) ['<em>アイ</em>フォン', '<em>アイ</em>フォーン', '<em>アイ</em>アイ', 'あいさつ'] hilight_apply_sub(p1, suggest_list) ['<em>アイ</em>フォン', '<em>アイ</em>フォーン', '<em>アイ</em><em>アイ</em>', 'あいさつ'] hilight_apply_pre(p2, suggest_list) ['<em>アイフ</em>ォン', '<em>アイフ</em>ォーン', 'アイアイ', 'あいさつ'] hilight_apply_sub(p2, suggest_list) ['<em>アイフ</em>ォン', '<em>アイフ</em>ォーン', 'アイアイ', 'あいさつ']
suggest_list = [ 'アアアア', 'アイフォーン', 'アイアイ', 'あいさつ', ] p1 = 'ア' p2 = 'アア' print('hilight_apply_pre(p1, suggest_list)', hilight_apply_pre(p1, suggest_list)) print('hilight_apply_sub(p1, suggest_list)', hilight_apply_sub(p1, suggest_list)) print('hilight_apply_pre(p2, suggest_list)', hilight_apply_pre(p2, suggest_list)) print('hilight_apply_sub(p2, suggest_list)', hilight_apply_sub(p2, suggest_list))
hilight_apply_pre(p1, suggest_list) ['<em>ア</em>アアア', '<em>ア</em>イフォーン', '<em>ア</em>イアイ', 'あいさつ'] hilight_apply_sub(p1, suggest_list) ['<em>ア</em><em>ア</em><em>ア</em><em>ア</em>', '<em>ア</em>イフォーン', '<em>ア</em>イ<em>ア</em>イ', 'あいさつ'] hilight_apply_pre(p2, suggest_list) ['<em>アア</em>アア', 'アイフォーン', 'アイアイ', 'あいさつ'] hilight_apply_sub(p2, suggest_list) ['<em>アア</em><em>アア</em>', 'アイフォーン', 'アイアイ', 'あいさつ']
suggest_list = [ '{}&6^aa|アイフォン', 'アイフォーン{}&6^aa|', 'アイアイ', 'あいさつ', ] p1 = '{}&6^aa|ア' p2 = 'ン{}&6^aa|' print('hilight_apply_pre(p1, suggest_list)', hilight_apply_pre(p1, suggest_list)) print('hilight_apply_sub(p1, suggest_list)', hilight_apply_sub(p1, suggest_list)) print('hilight_apply_pre(p2, suggest_list)', hilight_apply_pre(p2, suggest_list)) print('hilight_apply_sub(p2, suggest_list)', hilight_apply_sub(p2, suggest_list))
hilight_apply_pre(p1, suggest_list) ['<em>{}&6^aa|ア</em>イフォン', 'アイフォーン{}&6^aa|', 'アイアイ', 'あいさつ'] hilight_apply_sub(p1, suggest_list) ['<em>{}&6^aa|ア</em>イフォン', 'アイフォーン{}&6^aa|', 'アイアイ', 'あいさつ'] hilight_apply_pre(p2, suggest_list) ['{}&6^aa|アイフォン', 'アイフォーン{}&6^aa|', 'アイアイ', 'あいさつ'] hilight_apply_sub(p2, suggest_list) ['{}&6^aa|アイフォン', 'アイフォー<em>ン{}&6^aa|</em>', 'アイアイ', 'あいさつ']