将签约的表格统计为一个单词

时间:2018-02-03 15:17:10

标签: python

我在Python中制作一个单词计数器程序。我使用了以下正则表达式:

match = re.findall(r'\w+',fetch)

起初,它似乎工作正常。然而,在阅读这里的另一篇文章后,我开始意识到这个正则表达式代码实际上无法计算合同形式,例如" can&#t;#34;""&#t; t&#34 ;。我还希望我的程序将缩小的表单计算为Microsoft Word所做的一个单词,这样我的程序就可以成为完整的单词计数器。我怎么能这样做?

4 个答案:

答案 0 :(得分:3)

我们可以专注于非空格(即\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.']

请注意,我们还在点后添加点。所以我们计算非空间序列。

答案 1 :(得分:1)

另一种解决方案,您可以将split与一个或多个空格一起使用,如下所示:

match = re.split('\s+', fetch)

答案 2 :(得分:1)

试试这个。这也算得上"不能"

len(fetch.split())

答案 3 :(得分:1)

你可以试试这个。在括号中添加所需的标点符号。其他答案可能会遇到其他标点,如"。"。它应该取决于问题来决定哪个适合。

match = re.findall(r'[a-zA-Z\']+',fetch)
fetch = "That's crazy. I'm not going to be like that. I just can't."

["That's",
 'crazy',
 "I'm",
 'not',
 'going',
 'to',
 'be',
 'like',
 'that',
 'I',
 'just',
 "can't"]