我有一些新闻标题,我想提取标题中涉及的公司名称。这是一个例子
headlines = [
"Chicago Policemen's Annuity & Benefit Fund hired Chicago Equity Partners to manage $50 million in active U.S. smidcap value equity.",
"Belmont Contributory Retirement System is searching for at least one U.S. small-cap equity manager to run initially up to $5 million.",
"Phoenix Employees' Deferred Compensation Board will begin a search for an investment consultant before the end of February."
]
正如您所看到的,这里的模式是感兴趣的公司名称是第一个大写单词链。第二个大写单词链是次要公司。
在我们的示例中,我想返回两个与提取连续大写字母相关的变量。因此,它将回归"芝加哥警察的年金&福利基金","贝尔蒙特供款退休制度"和"菲尼克斯员工'延期赔偿委员会"
有没有办法在Python中使用正则表达式进行这种提取?
答案 0 :(得分:2)
对于您给出的示例,也许是匹配连续大写单词的选项,直到您遇到空格和小写字符或字符串的结尾。
^(?:[A-Z][^A-Z]+?)+(?= [a-z]|$)
解释
^
(?:
[A-Z]
[A-Z]+?
)+
并重复一次或多次(?=
,断言以下是
[a-z]
|
或$
)
在这种情况下,匹配会停止,直到遇到空格和小写字符,但您可以将字符类扩展为[a-z&]
,以便在遇到空格和符号时停止匹配。
答案 1 :(得分:0)
只是为了让你朝着正确的方向前进,
第1步:切割字符串(您的分隔符为空格)
步骤2:检查位置0的字符是否大写
步骤3:将子字符串添加/附加到your company name
步骤4:重复步骤2和3,直到第2步失败,然后您拥有公司名称。
有关切片的更多帮助: https://www.pythoncentral.io/cutting-and-slicing-strings-in-python/
答案 2 :(得分:0)