• 各种Python简单功能代码


    一、统计txt中英文单词出现的次数

     1 import string                  #处理文本时,需要去除跟在单词后的标点。所以用到string模块
     2 
     3 filename=open('sampleFile.txt')
     4 
     5 filelines=filename.readlines()
     6 filename.close()
     7 
     8 word_cnt={}
     9 
    10 for line in filelines:
    11     line=line.rstrip()              #去除文本后的'\n'
    12     identity=string.maketrans(' ',' ')      #为了配合translate函数,必须有一个table来表明将字符串的某字符替换成为另一种字符。虽然本功能中无须替换,但还是写了这么个凑数的变量。不知道除translate函数外,有没有更方便的去掉特定字符的函数?

    13 pun_num=string.punctuation+string.digits    #指定删除的字符为:标点符号和数字 14 line=line.translate(identity,pun_num)      #完成字符串中标点符号和数字的删除 15 line=line.lower()                  #将单词中的字母全部转换为小写字母
    16 word_list=line.split(' ')             #以空格为标志,将文本中的一行断开成单词。 17 for word in word_list: 18 if word_cnt.has_key(word): 19 word_cnt[word]+=1 20 else: 21 word_cnt[word]=1 22 23 result=sorted(word_cnt.iteritems(),key=lambda d:d[1],reverse=True)    #将字典按值的大小进行排序 24 print result

    ?如何将字典按值进行排序呢?

    • dict.iteritems(): an interator over the (key, value) items of D
    • lambda x:x+1    表明如果输入为x,则将其转化为x+1输出。lambda d:d[1]表示若访问(key,value),则输出value(即d[1],d[0]表示key)。这里的d可换作任意变量名,其作用为指代dict.iteritems()所返回的变量
    • reverse=True表示按值进行从大到小的排序;reverse=False表示按值进行从小到大的排序

    说明:代码的运行结果中,英文符号'被转换成了\xe2\x80\x99。不了解为什么会这样(应该与编码有关),也不清楚可以怎样解决。 

    二、将序列中重复的元素去除

    def unique(s):
        '''return a list without duplicate element'''
        try:
           return set(s)
        except TypeError:
            pass
        t = list(s)
        try:
            t.sort()
        except TypeError:
            del t
        else:
            return [x for i, x in enumerate(t) if not i or x != t[i-1]]
        
        u = []
        for x in s:
            if x not in u:
                u.append(x)
        return u
    
    if __name__ == '__main__':
        s = [1, 2, 3, 5, 6, 6, 5]
        print unique(s
    

      

  • 相关阅读:
    321list,元组,range**数字是不可迭代的!
    320作业
    320基础数据类型初始
    319作业
    316作业
    319 Python基础之格式化输出、逻辑运算符、编码、in not in、while else、
    windows查看端口占用指令
    2016年学习计划
    刷算法的时候有没有必要自写测试用例?
    我们为什么不能只用O记号来谈论算法?
  • 原文地址:https://www.cnblogs.com/sunada2005/p/3053377.html
Copyright © 2020-2023  润新知