使用Python 3.7在文本中查找类似模式
我有一个文本模式(关键字)的集合,我的目标是在HTML文本中找到相似和合适的单词,并使用Python3.7将它们收集到一个列表中。例如,如果我给定的一组模式是:{“香蕉”、“我的苹果”、“橙色”、“大葡萄”},我希望在HTML文本中找到诸如:“香蕉”、“我的苹果”、“我的苹果”、“橙色”、“大葡萄”、“大葡萄”“>香蕉”等单词。最好的方法是什么?我曾考虑过使用正则表达式库,但无法准确地找到我想要的单词 我目前的代码是:使用Python 3.7在文本中查找类似模式,python,regex,Python,Regex,我有一个文本模式(关键字)的集合,我的目标是在HTML文本中找到相似和合适的单词,并使用Python3.7将它们收集到一个列表中。例如,如果我给定的一组模式是:{“香蕉”、“我的苹果”、“橙色”、“大葡萄”},我希望在HTML文本中找到诸如:“香蕉”、“我的苹果”、“我的苹果”、“橙色”、“大葡萄”、“大葡萄”“>香蕉”等单词。最好的方法是什么?我曾考虑过使用正则表达式库,但无法准确地找到我想要的单词 我目前的代码是: import re def find_patterns_in_text(k
import re
def find_patterns_in_text(keywords, html_text):
output_list = []
for keyword in keywords:
if re.findall(keyword, html_text):
output_list.append(keyword)
return output_list
我的代码无法正常工作,因为它无法找到以下情况:
- 如果HTML文本或关键字集中出现的单词旁边带有某种特殊字符,则它无法识别
- 如果其中一个关键字包含“-”而不是“”,或者以类似方式包含“而不是”-”,并且在HTML文本中出现相同的单词,但“”和“-”不合适,则无法识别它
[\s-]+
模式替换-
和空格
:
重新导入
def在文本中查找模式(关键字、html文本):
输出列表=[]
对于关键字中的关键字:
if re.search(r)(?转义您搜索的模式,并在结果表达式中用[\s-]+
模式替换-
和空格
:
重新导入
def在文本中查找模式(关键字、html文本):
输出列表=[]
对于关键字中的关键字:
如果重新搜索(r)(?它不能正常工作,即使同一个词同时出现在关键字和文本中,它也无法识别。例如,如果关键字是:[“medicine”],HTML文本是:“medicine”。或者另一个示例:关键字是:[“biotechnology”]文本为:@AviFerdman如果搜索必须不区分大小写,请使用re.I
re.search(re.sub(r'(?:\\[-])+',r'[\\s-]+',re.escape(关键字)),html\u text,re.I)
。请参阅。我将文本和关键字都转换为小写,因为我只能使用默认库,但它仍然无法识别模式。@AviFerdman,它可以工作。无需转换为小写。即使同一个单词同时出现在关键字和文本中,它也无法识别。例如,如果关键字rds是:[“medicine”],HTML文本是:“medicine.”或者另一个例子:关键字是:[“biotechnology”],文本是:@AviFerdman如果搜索必须不区分大小写,请使用re.I
re.search(re.sub(r'(?:\\[-])+,r'[\\s-]+',re.escape(关键字)),HTML\u text,re.I)
。请参阅。我将文本和关键字都转换为小写,因为我只能使用默认库,但它仍然无法识别模式。@AviFerdman,它可以工作。无需转换为小写。