20170512 Python练习册0004统计英文的纯文本文件的单词出现的个数

#!/usr/bin/env python
# -*-coding:utf-8-*-

# 第 0004 题:任一个英文的纯文本文件,统计其中的单词出现的个数
from collections import Counter
import re

def creat_list(filename):
data_list = []
with open(filename,'r',encoding= 'utf-8') as f:#打开文件,encoding=‘utf-8',不然报UnicodeDecodeError
for line in f:#循环每一个字母
content = re.sub(r'[-,]|\d|\?|:|"|!|\.|/|', '', line)#利用正则替换掉数字,字符等,替换为空格
print(content)#打印看一下是否替换完了
data_list.extend(content.strip().split(' '))#删除空白符(包括'\n','\r','\t',' '),并以' '空格来切割生成的字符串
#print(data_list)#打印一遍生成的列表
return data_list
def wc(fileneme):
print(Counter(creat_list(fileneme)))#调用creat_list函数处理文件,并用Counter计数
if __name__=='__main__':
filename = 'F:\python\Python练习册\Walden.txt'
wc(filename)

需要用到的知识有:
# split(pattern,string,maxsplit=0,flag=0
# split根据匹配到的字符串来分割字符,返回分割字符串组成的列表
 
import re
str4 = 'imooc:C C++ Java Python'
info_split1 = re.split(r':| ',str4)#将字符串str4 按:或者空格 进行分割
print(info_split1)
 
str5 = 'imooc:C C++ Java Python,C#'
info_split2 = re.split(r':| |,',str5)
print(info_split2)#按照冒号: 空格 或者逗号,进行分割成列表
 

Counter

Counter是一个简单的计数器,例如,统计字符出现的个数:

>>> from collections import Counter
>>> c = Counter()
>>> for ch in 'programming':
...     c[ch] = c[ch] + 1
...
>>> c
Counter({'g': 2, 'm': 2, 'r': 2, 'a': 1, 'i': 1, 'o': 1, 'n': 1, 'p': 1})

Counter实际上也是dict的一个子类,上面的结果可以看出,字符'g''m''r'各出现了两次,其他字符各出现了一次。

posted @ 2017-05-12 16:09  云ime  阅读(304)  评论(0编辑  收藏  举报