Python稳基修炼的经典案例12(计算机二级、初学者必会的字符文件处理)

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()

02
这里面的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))

03

  • 若要打印每个词对应的次数,则可以加入:
for key in dic:
    rst.append("{}:{}".format(key, dic[key]))
print(",".join(rst))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿蒙Next

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值