我正在用 Python 编写一个单词计数器程序。我使用了以下正则表达式:
match = re.findall(r'\w+',fetch)
起初,它似乎工作正常。然而,在这里阅读另一篇文章后,我开始意识到这个正则表达式代码实际上不能计算像“can't”、“don't”这样的缩略形式。我还希望我的程序像 Microsoft Word 一样将缩略形式计为一个词,这样我的程序就可以成为成熟的单词计数器。我该怎么做?
请您参考如下方法:
我们可以关注非空格(即\S),而不是过多地关注收缩形式等,因此将其用作:
match = re.findall(r'\S+',fetch)
这将产生:
>>> fetch = "I don't want to count contracted forms like don't and can't as two words."
>>> import re
>>> re.findall(r'\S+', fetch)
['I', "don't", 'want', 'to', 'count', 'contracted', 'forms', 'like', "don't", 'and', "can't", 'as', 'two', 'words.']
请注意,我们还在单词后面添加了点。所以我们计算非空格的序列。
