我有一个短语列表(由用户输入),我想在文本文件中找到它们,例如:
titles = ['Blue Team', 'Final Match', 'Best Player',]
text = 'In today Final match, The Best player is Joe from the Blue Team and the second best player is Jack from the Red team.'
1./我可以像这样找到这些短语的所有出现
titre = re.compile(r'(?P<title>%s)' % '|'.join(titles), re.M)
list = [ t for t in titre.split(text) if titre.search(t) ]
(为简单起见,我假设完美的间距。)
2./我还可以找到这些短语的变体,例如“蓝队”、“决赛”、“最佳球员”……使用 re.I,如果它们出现在文本中。
但我想限制为仅查找首字母大写的输入短语的变体,例如文本中的“蓝队”,无论它们如何作为输入输入,例如“蓝队”。
是否可以写一些东西来“阻止”短语的一部分的 re.I 标志?在伪代码中,我想象生成类似“[B]lue Team|[F]inal Match”的内容。
注意:例如,我的主要目标不是计算文本中输入短语的频率,而是提取和分析它们之间或周围的文本片段。
最佳答案
我将使用 re.I
并将 list-comp 修改为:
l = [ t for t in titre.split(text) if titre.search(t) and t[0].isupper() ]
关于python,re.search/re.split 用于看起来像标题的短语,即以大写字母开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9407718/