从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 文件中的值列表开始的值

如何将列表视图中的数据从一个片段发送到另一个片段

在python中,如何通过匹配原始列表中的字符串模式从字符串列表中提取子列表

循环通过 python 正则表达式匹配