import string
path = r'F:\5-学习\python学习\20160923\Walden.txt'
with open(path,'r',encoding= 'utf-8') as text:
words = [word.strip(string.punctuation).lower() for word in text.read().split()] #列表解析式 从字符串中去掉特殊字符
print(string.punctuation) #ASCII中所有的特殊字符
# print(words,'\n')
words_index = set(words) #去掉重复的单词
counts_dict = {index:words.count(index) for index in words_index} #字典解析式 统计重复的单词 使用count()方法
# print(counts_dict,'\n')
for word in sorted(counts_dict, key=lambda x:counts_dict[x],reverse=True): #对统计次数逆向进行排序
print('{}-{} times'.format(word,counts_dict[word]))
总结:
整体思路:
1、对文档中的单词分割保存在列表中
2、对列表中的单词中的特殊字符去除
3、使用set集合,去除重复的单词
4、从处理后的单词集合中取出单词,然后使用count方法统计单词个数
5、最终对统计后的单词次数排序
小知识:
string.punctuation # ASCII中所有的特殊字符
strip(string.punctuation) #在字符串头尾中含有特殊字符的去掉
words.count(index) #words中包含有index字符的次数
key=lambda x:counts_dict[x] #函数表达式,怎么用还不清楚