与 Python 中包含空格的术语一起使用的标记化?

Tokenization which works with terms that contain whitespace in Python?

我在 Python 中使用正则表达式标记文本的标准方法是:

> text = "Los Angeles is in California"
> tokens = re.findall(r'\w+', text)
> tokens
['Los','Angeles','is','in','California']

如果我想在上面的文本中找到名字Los Angeles,就会出现问题

在大海捞针中找到包含空白的针的最佳方法是什么?

我问的是一个一般性问题,因为该解决方案也适用于 United States of America 和不包含空格的针。

例如,一个简单的 if "Los Angeles" in text(匹配)是行不通的,因为 if "for" in text 也会 return 匹配。但我只是在寻找完整的单词(匹配 for 而不是 California)。

我建议使用 NLTK 这样的文本解析器来完成此类任务。

但对于这种情况,您可以使用以下正则表达式:

>>> re.findall(r'\b([A-Z]\w+ [A-Z]\w+)|(\w+)\b',text)
[('Los Angeles', ''), ('', 'is'), ('', 'in'), ('', 'California')]

正则表达式r'([A-Z]\w+ [A-Z]\w+)|(\w+)'将匹配2组第一个是其元素包含大写单词的成对单词!第二个将匹配一个词!

事实证明解决方案很简单:

re.search(r'\b'+needle+r'\b', haystack)