文本fi上用于名称提取的正则表达式

2024-06-01 12:50:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个纯文本文件,其中包含作者和摘要的列表,我试图提取出作者姓名,用于网络分析。我的文本遵循此模式,包含500多篇摘要:

2010 - NUCLEAR FORENSICS OF SPECIAL NUCLEAR MATERIAL AT LOS ALAMOS: THREE RECENT STUDIES 

Purchase this article

David L. Gallimore, Los Alamos National Laboratory

Katherine Garduno, Los Alamos National Laboratory

Russell C. Keller, Los Alamos National Laboratory

Nuclear forensics of special nuclear materials is a highly specialized field because there are few analytical laboratories in the world that can safely handle nuclear materials, perform high accuracy and precision analysis using validated analytical methods.

我在re库中使用python2.7.6。在

我试过了

^{pr2}$

它只提取了摘要中的姓氏和逗号之前的任何大写单词。在

使用(r'.*,')可以很好地提取全名,但也可以获取我不需要的整个摘要。在

也许正则表达式是错误的方法?任何帮助或想法都是感激的。在


Tags: 文本列表模式作者网络分析laboratory文本文件nuclear
2条回答

试试这个

[A-Za-z]* ?([A-Za-z]+.) [A-Za-z]*(?:,+)

它使中间名是可选的,另外它将逗号放在非捕获组中,从而从结果中排除逗号

如果你想匹配名字,我会尝试匹配整个子串而不是它的一部分。在

您可以使用以下正则表达式并在需要时对其进行修改。在

>>> regex = re.compile(r'\b([A-Z][a-z]+(?: [A-Z]\.)? [A-Z][a-z]+),')
>>> print regex.findall(text)
['David L. Gallimore', 'Katherine Garduno', 'Russell C. Keller']

Working Demo| Explanation

相关问题 更多 >