从python中的列表中获得完全匹配
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从python中的列表中获得完全匹配相关的知识,希望对你有一定的参考价值。
我正在尝试从一个文本块中提取名称,因为只有很少的名称会出现,所以只需预先构建名称列表就很容易了,我想在文本中进行匹配。例如,我有以下列表:
names = [ "Wim Duisenberg", "Jean-Claude Trichet", "Mario Draghi", "Christine Lagarde"]
以及以下通过漂亮的汤刮掉的文字块:
print(textauthors)
<h2 class="ecb-pressContentSubtitle">Mario Draghi, President of the ECB, <br/>Vítor Constâncio, Vice-President of the ECB, <br/>Frankfurt am Main, 20 October 2016</h2>
我尝试了以下解决方案(基于堆栈溢出时的this答案:
def exact_Match(textauthors, names):
b = r'(s|^|$)'
res = return re.match(b + word + b, phrase, flags=re.IGNORECASE)
print(res)
它给我一个语法错误的错误,我不确定如何解决。如果在堆栈溢出的某个地方已经有答案,也请允许我提前道歉,我是python初学者,我不确定如何搜索正确的问题。当我搜索名称的匹配项时,我会看到尝试使用nltk进行匹配的答案,但这并不适合我想要完全匹配的地方,而当我尝试基于字符串文本搜索匹配项时,我找不到该答案会为我工作。
答案
这将为您提供文本作者的作者:
import re
textauthors = '<h2 class="ecb-pressContentSubtitle">Mario Draghi, President of the ECB, <br/>Vítor Constâncio, Vice-President of the ECB, <br/>Frankfurt am Main, 20 October 2016</h2>'
regex = r">(?P<name>[^s]+s[^s]+),"
matches = re.findall(regex, textauthors)
print(matches) # ['Mario Draghi', 'Vítor Constâncio']
当然,如果您需要从文本作者中提取作者
另一答案
您可以从名称列表中形成一个正则表达式替代,然后在其上进行搜索:
names = [ "Wim Duisenberg", "Jean-Claude Trichet", "Mario Draghi", "Christine Lagarde"]
regex = '(' + '|'.join(names) + ')'
matches = re.findall(regex, textauthors)
print(matches)
以上是关于从python中的列表中获得完全匹配的主要内容,如果未能解决你的问题,请参考以下文章
Excel - 需要从数组中搜索列表单元格的子字符串,无法获得索引/匹配工作吗?
检查列表中的偶数,并在 Scala 中获得类型不匹配 [重复]
使用 Python 有效地查找部分字符串匹配 --> 从 5 GB 文件中的值列表开始的值