各種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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM