我希望使用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]+)+
但我希望它为'美利坚合众国'。约翰逊和约翰逊也是如此。
答案 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']