我在python中有一个文档,我通过以下方式阅读:
tokens = re.findall('\w+', doc) # Note that \w+ splits hyphenated words
for token in tokens:
问题是我可以搜索简单的单词(例如“香蕉”,但不能搜索短语,例如“黄色香蕉”)。如何更改代码,以便能够在简单单词之上搜索短语?
好像我某种程度上需要以字符串形式读取整个文件,而不是逐字标记它?
您似乎想要获取单词,然后将它们与空格连接,因为您的“短语”似乎是用空格分隔的单个单词。使用
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。