使用python regex获取连续的大写字母

时间:2014-09-22 15:18:27

标签: python

我希望使用python regex获得连续的单词。 例如在文本中:

"the United States of America has many big cities like New York and Los Angeles, and others like Atlanta"

输出应为

['United States of America','New York','Los Angeles']

有人能帮助我吗? 而且我们已经使用正则表达式将输出作为“美国”获得了

[A-Z][a-z]+(?=\s[A-Z])(?:\s[A-Z][a-z]+)+

但我希望它为'美利坚合众国'。约翰逊和约翰逊也是如此。

2 个答案:

答案 0 :(得分:0)

我解决此类问题的方法是使用某种例外列表。例如,如果我找到"美国"这个词,那么代码应该检查下一个字符是否是"""并解析直到" America" (我希望这是有道理的)。在采用这种方法时,需要仔细考虑速度和效率。如果你不小心的话,你可以很容易地拥有一个O ^ n的功能。

PS 为什么这个问题得到了如此多的投票?这似乎是一个有效的问题。

答案 1 :(得分:0)

好吧,最后我有点想出来,这符合我的需要。这是我最终完成工作的模式。

text = 'United States of America has many big cities like New York.'
pattern = '([A-Z][a-z]+(?:\s+[A-Z][a-z]+)*(?:\s+[a-z]+)?(?:\s+[A-Z][a-z]+)+)'
result = re.findall(pattern,text)
print result
['United States of America', 'New York']