指定关键词,在一段文本中搜索并在关键词前后进行插入自定义字符串

分享自己写的一段代码。该代码可以实现如下的功能:

输入“我是蜘蛛侠,我从小就活泼好动,还抢过美国队长的盾“这句话,并且指定关键词【美国队长, 蜘蛛侠】,在关键词的前后增加html标签b来进行加粗。

得到输出“我是蜘蛛侠,我从小就活泼好动,还抢过美国队长的盾“

调用方法

input_str = "我是蜘蛛侠,我从小就活泼好动,还抢过美国队长的盾"
keyword_list = ["美国队长", "蜘蛛侠"]
output = search_and_add(input_str, keyword_list, "", "")
print(output)
from operator import itemgetterdef search_and_add(input_str, str_list, prefix, suffix):"""輸入一段文字,用str_list的短語去搜索,如果命中的話,則在命中的短語前後添加prefix和suffix。如search_and_add("abcdefg", ['b', 'd'], "", "") 則輸出為abcdefg:param input_str::param str_list::param prefix::param suffix::return:"""str_length_map = {s: len(s) for s in str_list}sorted_tuple = sorted(str_length_map.items(), key=itemgetter(1), reverse=True)target_list = [i[0] for i in sorted_tuple]arr = []_search_and_add(input_str, target_list, arr, prefix, suffix)result = ""for item in arr:result += itemreturn resultdef _search_and_add(input_str, str_list, arr, prefix, suffix):"""嵌套調用自身:param input_str::param str_list::param arr::return:"""cut_result = cut_3(input_str, str_list, prefix, suffix)if cut_result is None:arr.append(input_str)returnleft = cut_result[0]middle = cut_result[1]right = cut_result[2]if left != "":_search_and_add(left, str_list, arr, prefix, suffix)arr.append(middle)if right != "":_search_and_add(right, str_list, arr, prefix, suffix)def cut_3(input_str, str_list, prefix, suffix):"""传入一个字符串,如果能被str_list中的某一个短语cut的话,则返回三段式,如果没有可以cut的短语,则返回None:param input_str::param str_list::return:"""for target in str_list:if target not in input_str:continueindex = input_str.index(target)if index == 0:# 首命中return ["", prefix + target + suffix, input_str[index + len(target):]];elif (index + len(target)) == len(input_str):# 尾命中return [input_str[0:index], prefix + target + suffix, ""];else:# 中间命中return [input_str[0:index], prefix + target + suffix, input_str[index + len(target):]];return Noneif __name__ == '__main__':print(search_and_add("abcdefgabcdefg", ['abcdef','abcdefg'], "", ""))


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部