zoukankan      html  css  js  c++  java
  • 二级python两种不同处理方式统计字频

    效果展示:
    的:32
    军:26
    人:25
    民:18
    情:13
    一:12
    不:9
    爱:8
    们:8
    在:8
    个:8
    有:8
    时:8
    身:7
    着:7
    战:7
    代:7
    心:7
    是:6
    险:6
    场:6
    水:6
    ...

    方法一:
    将整篇文章作为一个字符串,遍历处理

    d={}
    fi=open("2.txt","r",encoding='gbk')#这里是待打开的文本2.txt
    txt=fi.read()#注意这里有.read()
    for ch in txt:
        if ch in ", 。:“”、!——~
     ":
            continue
        else:
            d[ch]=d.get(ch,0)+1
    ls=list(d.items())
    ls.sort(key=lambda x:x[1],reverse=True)
    fo=open("3.txt","w",encoding='gbk')#写入3.txt
    for i in ls:
        fo.write("{}:{}
    ".format(i[0],i[1]))#注意这里是i[0],i[1]
    fi.close()
    fo.close()
    

    方法二:
    将文章每行处理

    d={}
    fi=open("2.txt","r",encoding='gbk')#这里是待打开的文本2.txt
    for line in fi:
        for ch in line:
            if ch in ", 。:“”、!——~
     ":
                line.replace(ch,'')#/continue
            #line.replace(**", 。:“”、!——~
     "**, ''),注意这个replace使用不对,参数中不能给出超过一个被替换字符
            else:
                d[ch]=d.get(ch,0)+1
    ls=list(d.items())
    ls.sort(key=lambda x:x[1],reverse=True)
    fo=open("3.txt","w",encoding='gbk')#写入3.txt
    for i in ls:
        fo.write("{}:{}
    ".format(i[0],i[1]))#注意这里是i[0],i[1]
    fi.close()
    fo.close()
    

    值得一说的是,行和整篇文章在读取后,都是str类型,因此处理方法大同小异。但有时候并非两种方法可以相互交换使用,比如在提纯原文时,就用行处理会好很多:
    比如论语的提纯一题————————注释/原文标题下有下辖几行对应的内容时就需要先找到标题,然后将直到下一个标题出现之前的行全部统计进入该标题,而后处理,显然用行处理更加方便,另外strip,split也更加配合行处理的使用

    fi = open("论语.txt", "r")
    fo = open("论语-原文.txt", "w")
    a=0
    for line in fi:#每次读完,line都是一个字符串
        if a==1 and line.**count("【注释】")==0 **and line.count("【原文】")==0:
            line=line.strip(" 
    ")
            if line.strip():#去掉各种符号后,如果不是空字符串
                fo.write("{}
    ".format(line))
        if line.count("【原文】")>0:
            a=1#利用a的值来控制写或者不写
        if line.count("【注释】")>0:
            a=0
    fi.close()
    fo.close()
    
    这篇文章,是又一个故事的结束...
    lazy's story is continuing.
  • 相关阅读:
    c#冒泡排序
    C# 虚方法(virtual)覆盖(override) 隐藏(new) 重载
    Javascript 大括号
    C# const.static.readonly.
    热点链接(img map area)
    WeiBo返回错误码的二种方式
    Cookie跨域操作
    synchronized(this)与synchronized(class)
    线程安全场景备忘
    git新建一个分支setupstream
  • 原文地址:https://www.cnblogs.com/Hello-world-hello-lazy/p/15318167.html
Copyright © 2011-2022 走看看