python解决不区分大小写统计问题

python 专栏收录该内容
20 篇文章 0 订阅

遇到陌生网友问不知道怎么不区分大小写统计词频问题

在这里插入图片描述
题目是这样的:
在这里插入图片描述
将字母先全部转为小写,把特殊字符全部用空格代替,以空格分割,加入字典即可

fin=str(input("输入一个英文句子:"))
for ch in fin:
    if 65<=ord(ch)and ord(ch)<=90:
        fin=fin.replace(ch,chr(ord(ch)+32))#大写通过ascall转小写
for ch in '"";!+-(),.[]{}<<>>:':
    fin=fin.replace(ch," ")#将特殊符号转为空格
words=fin.split()#split以空格为分割符
pac={}#定义一个空字典
for i in words:
    pac[i]=pac.get(i,0)+1#返回pac[key]因为唯一性可避免单词重复
k=0#统计总词汇
sum=""
for i,j in pac.items():#字典二元组查找
    k+=1
    sum+=i+" "
print('全部单词如下:\n',sum)
print('共有{',str(k),'}个单词')

在这里插入图片描述
优化代码:将非字母的字符全部转为空格符号直接分割,简单直接,不用考虑特殊符号

words=str(input("输入一个英文句子:"))
for ch in words:
    if ord(ch)>=65 and ord(ch)<=90:#大写字母对应的Ascall
        words=words.replace(ch,chr(ord(ch)+32))#大写通过Ascall转小写
    if ord(ch)<97 or ord(ch)>122:#非小写字母对应的Ascall
        words=words.replace(ch,' ')#空格代替所有非小写字母
pac={}#定义一个空字典
for i in words.split():
    pac[i]=pac.get(i,0)+1#返回pac[key]因为唯一性可避免单词重复
k=0#统计总词汇
sum=''
for key in pac:#一元组查找
    k+=1
    sum+=key+' '
number={k}#不同单词数量的字典
print('全部单词如下:\n',sum)
print('共有',number,'不同个单词')

基本上ok,想改的话加点自己的东西就好了
有时间我都会解答简单问题
睡觉,最后peace!

  • 5
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值