1、统计文件中出现的所有中文字符及标点符号的数量
- 题:统计文件中出现的所有中文字符及标点符号的数量,字符与数量用冒号隔开
如,“命:1024”
fi = open("a.txt", 'r', encoding='gbk')
fo = open("b.txt", 'w', encoding='gbk')
txt = fi.read()
d = {}
for c in txt:
d[c] = d.get(c, 0)+1 # 利用get创建键值对,同时变化值的大小
#del d[''] # 删除空格
#del d['\n'] # 删除换行
ls = []
for key in d: # 遍历所有键,追加到列表中
ls.append("{}:{}".format(key, d[key]))
fo.write(','.join(ls)) # 用逗号分隔每组 键及数量
fi.close()
fo.close()
2、统计文本中出现引号的字符占文本总字符的比例
- 题:统计文本中出现引号的字符占文本总字符的比例,如,“命:20%”,提示:比例=字符数/文本长度
fi = open("a.txt", 'r', encoding='gbk')
txt = fi.read()
con = 0
flag = False
for c in txt:
if c == '“': # 前引号,变True开启加1操作
flag = True
if c == '”': # 遇到后引号,就关闭加1操作
flag = False
if flag:
con += 1
print("占总字符比例:{:.0%}。".format(con/len(txt))) # 比例不带小数
fi.close()
这里面的a.txt便是上文中的那个a.txt
3、统计出现次数最多的8个词语
- 题:统计文本文件中出现的中文词及其对应的次数,并输出出现次数最多的8个词语
import jieba
fi = open("a.txt", 'r', encoding='gbk')
txt = fi.read() # 获得文本对象
fi.close()
ls = jieba.lcut(txt) # 获取分词
dic = {}
for w in ls: # 遍历所有分词,同时添加键与值,并统计次数
dic[w] = dic.get(w,0) + 1
rst = [] # 存放次数最多的前8个次的列表
for i in range(8): # 8次遍历整个字典,每次都找出次数最多的那个词,放入mxj中
mx = 0 # 次数最多的值
mxj = 0 # 次数最多的键
for j in dic:
if dic[j] > mx:
mx = dic[j] # 获得此轮值
mxj = j # 获得此轮键
rst.append(mxj) # 追加键名到列表中
del dic[mxj]
print(",".join(rst))
- 若要打印每个词对应的次数,则可以加入:
for key in dic:
rst.append("{}:{}".format(key, dic[key]))
print(",".join(rst))