与 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)
我在 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)