weixin_45842426 2021-04-10 21:21 采纳率: 100%
浏览 74
已结题

python统计字符问题

代码如下:

import string
def countfeq(word_list):
    word_list=word_list.strip('\r\n')
    word_list=word_list.split('/')
    word_list_dict={}
    for i in word_list:
        if i in word_list_dict.keys():
           word_list_dict[i]+=1
        else:
           word_list_dict[i]=1
    return word_list_dict
if __name__ == "__main__":
    file=open('words.txt','r',encoding='utf-8')
    word_list=file.read()
    result=countfeq(word_list)
    word=input()
    if word in result.keys():
        print(result[word])
    else:
        print(0)

其中words.txt中内容为:

我/是/一个/测试/句子/,/大家/赶快/来/统计/我/吧/,/大家/赶快/来/统计/我/吧/,/大家/赶快/来/统计/我/吧/,/重要/事情/说/三遍/!/
我/是/一个/测试/句子/,/大家/赶快/来/统计/我/吧/,/大家/赶快/来/统计/我/吧/,/大家/赶快/来/统计/我/吧/,/重要/事情/说/三遍/!/
我/是/一个/测试/句子/,/大家/赶快/来/统计/我/吧/,/大家/赶快/来/统计/我/吧/,/大家/赶快/来/统计/我/吧/,/重要/事情/说/三遍/!/

统计结果“我”应该出现12次,目前我的代码只能出现10次,请问是什么原因。如何解决,谢谢

  • 写回答

2条回答 默认 最新

  • 关注

    word_list=word_list.strip('\r\n')只能去掉文本开头和结尾两边的\r\n。

    文本中间的\r\n没有去掉。

    你输出下word_list_dict字典就知道是什么原因了。

    应该用

        word_list=word_list.replace('\n',"").replace('\r',"")

     

    或者在循环中对每个元素用i.strip()也可以

     

    def countfeq(word_list):

        word_list=word_list.split('/')

        word_list_dict={}

        for i in word_list:

            i = i.strip() #在循环中对每个元素用i.strip()也可以

            if i in word_list_dict.keys():

               word_list_dict[i]+=1

            else:

               word_list_dict[i]=1

        return word_list_dict

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥20 jupyter保存图像功能的实现
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符