zoukankan      html  css  js  c++  java
  • 20190221-文件操作

    假定一个全英文的文件,读取该文件,请统计多少个不重复的单词,并且在另外一个文件中写上结果每个单词出现的次数,以及一共有多少个不重复的单词分别为哪些

    注意:文件中可能包含特殊符号

    Step1:打开文件,可使用方法如下:

      方法1:fp = open(file,'r',encoding ='utf-8')

      方法2:with open(file,'r',encoding ='utf-8') as fp:

    Step2:读取文件,基于该题的需求,我们按行读取,并对每行进行处理如下:

      1.读取每一行,将每一行中的特殊字符替换为空白

      2.将替换后的字符加到一个content里面(content最终用来存储文件里面的所有被去掉特殊字符的单词结果)

    Step3:统计每个单词的出现次数:

      1.统计结果使用字典存储格式如下{单词:出现次数}

      2.出现次数为1的单词即为不重复的单词

    Step4:将每个单词的出现次数写到一个新的文件中

      1.遍历step产生的字典,将Key:value写入新的文件

    代码如下:

    def count_file_content(file_dir):
        result =''#存储所有被处理了特殊字符的文件内容
        word_count_result={}#存储单词出现次数
        import string
        with open(file_dir,'r',encoding ='utf-8') as fp:
            for line in fp:
                s = line.strip()
                for i in string.punctuation:
                    s = s.replace(i,' ')
                result +=s
    #获取不包含特殊字符的文件内容
        word_list = result.split()
        for item in word_list:
           # print(item)
            if item in word_count_result.keys():
                word_count_result[item]+=1
            else:
                word_count_result[item]=1
    #获取每个单词出现次数
        count =0
        non_duplicateword=[]
        #统计不重复单词的个数
        for k,w in word_count_result.items():
            if w ==1:
                count+=1
                non_duplicateword.append(k)
    #non_duplicateword存储的所有仅出现一次的单词,count 为仅出现一次的单词总数
        with open(file_dir+'result.txt','w',encoding ='utf-8') as fp1:
            fp1.write('一共'+str(count)+'个不重复的单词
    ')
            for k,w in word_count_result.items():
                fp1.write(k+"单词出现"+str(w)+"")
    #将结果写入另一个文件中

     

     

     

      

        

     

  • 相关阅读:
    【算法笔记】多线程斐波那契数列
    RAID技术详解
    Mysql 语句汇总(性能篇)
    JS 网页打印解决方案
    MyEclipse修改
    几个需要学习的点和技术
    MyEclipse配色字体等配置的解决方案
    使用hibernate 分表做增删改查
    Web平台开发流程以及规范
    easyui使用总结
  • 原文地址:https://www.cnblogs.com/hyj691001/p/10415427.html
Copyright © 2011-2022 走看看