nltk的text6中的首字母大写,所有其他字母小写

时间:2019-04-02 11:31:27

标签: python regex nltk

我正在用python在线学习nltk。

任务是从完整的Text6集合中过滤单词,第一个字母为大写字母,所有其他字母为小写字母。 打印出现的单词数。

有人可以帮忙说出确切答案(因为这是nltk的标准文字)以及代码中有什么问题。

我尝试了以下代码:

from nltk.book import text6
import re
pattern = '[A-Z]+[a-z]+$'
capsword= [word for word in set(text6) if re.search(pattern, word)]
print(len(capsword))

我的实际输出是461。 但是,我不确定预期的输出是否被隐藏。

2 个答案:

答案 0 :(得分:1)

这应该对您有用,在Fresco Play上对我有用

from nltk.book import text6    
title_words = [word for word in text6 if word.istitle()]

print(len(title_words))

Output: 2672

根据挑战,我们应该在text6中使用完整的单词集。

istitle()方法对于首字母大写而所有其他字母小写的单词返回 True

答案 1 :(得分:0)

我更改了模式(包括特殊字符,如ABC!或ABC。),它起作用了:

from nltk.book import text6
import re
pattern = '[A-Z][a-z*]'
a = [word for word in set(text6) if (re.search(pattern, word))]
print(len(a))