首页 > 解决方案 > Python - 文本分析 - 搜索短语而不是简单的单词(标记)

问题描述

我有一个python文档,我通过以下方式阅读:

tokens = re.findall('\w+', doc)  # Note that \w+ splits hyphenated words
for token in tokens:

这样做的问题是我可以搜索简单的单词(例如“bananas”,但不能搜索短语,例如“yellow bananas”)。我应该如何更改我的代码以便能够在简单单词之上搜索短语?

似乎我需要以某种方式将整个文件作为字符串读取,而不是逐字标记?

标签: pythonregex

解决方案


您似乎想要获取单词,然后用空格将它们连接起来,因为您的“短语”似乎是单个空格分隔的单词。利用

text = ''
with open(path, 'r') as fr:
    text = fr.read()
clean_text = " ".join(re.findall(r'\w+(?:-\w+)*', text)) 

然后,您可以简单地使用.find().

\w+(?:-\w+)*模式提取连字符和非连字符的单词:

  • \w+- 一个或多个字母、数字、_s
  • (?:-\w+)*- 0次或多次重复
    • -- 一个连字符
  • \w+- 一个或多个字母、数字、_s。

推荐阅读