如何使用正则表达式从python的字符串中提取大学/学校/学院的名称?

时间:2018-12-06 06:15:49

标签: python regex

示例代码

import re
line = "should we use regex more often, University of Pennsylvania. let me know at  321dsasdsa@dasdsa.com.lol"
match = re.search(r'/([A-Z][^\s,.]+[.]?\s[(]?)*(Hospital|University|Institute|Law School|School of|Academy)[^,\d]*(?=,|\d)/', line)
print(match.group(0))

我正在尝试使用python中的正则表达式从给定的字符串中提取大学/学校/组织名称,但这会给出错误消息。

错误消息

  

回溯(最近通话最近):文件   “ C:/Python/addOrganization.py”,第4行,在       print(match.group(0))AttributeError:'NoneType'对象没有属性'group'

2 个答案:

答案 0 :(得分:0)

代替搜索,请尝试re.sub打印您的预期输出

import re
i = "should we use regex more often, University of Pennsylvania. let me know at  321dsasdsa@dasdsa.com.lol"
line = re.sub(r"[\w\W]* ((Hospital|University|Centre|Law School|School|Academy|Department)[\w -]*)[\w\W]*$", r"\1", i)
print line

答案 1 :(得分:0)

您给出的测试字符串是一个组成的字符串,因为大学名称后紧跟一个行终止符“。”。而您的pastebin sample中的其他示例则没有(它们后面带有逗号)。

line = should we use regex more often, University of Pennsylvania. let me know at 321dsasdsa@dasdsa.com.lol

在您的pastebin中,我已经使用一个简单的正则表达式提取了示例名称​​,您可以在此处查看详细信息:regex101.com

逻辑

由于学院名称用逗号分隔(第一种情况是以大学名称开头),因此您可以看到匹配字符串位于group1或{{1}中}。

然后,您可以遍历group2group1以查看其是否与预定义的匹配列表中的任何内容匹配并返回值。

代码

我已经用两个例子证明了它的作用。

group2