2-gramのコード

日頃から書いてないと忘れる。

list.count('a')でリストlist=['a','b','a',...]内のaの数を数える。
重複の削除はif not文をうまく活用する。

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import re

sent = u"日本語で書いた日本語の文を解析します。"
arr=[]
for i in range(len(sent)-1):
    arr.append(sent[i]+sent[i+1])

comb = [(a,arr.count(a)) for a in arr]
rmv = []
for c in comb:
    if not c in rmv:
        rmv.append(c) #重複を削除(if notを使うのがミソ)
for r in rmv:
    print r[0],r[1]

sorted()でソート機能つけた。
あと、ファイル読み込みも。

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import re
import codecs

filename = raw_input("input the file name:")
fin = codecs.open(filename,"r","utf-8")
fout = codecs.open("out.txt","w","utf-8")
#sent = u"日本語で書いた日本語の文を解析します。"
arr = []
for line in fin:
    for i in range(len(line)-1):
        arr.append(line[i]+line[i+1])

comb = [(a,arr.count(a)) for a in arr]
rmv = []
for c in comb:
    if not c in rmv:
        rmv.append(c) #重複を削除(if notを使うのがミソ)
rmv = sorted(rmv,key=lambda x:int(x[1]),reverse=True)

for r in rmv:
    print r[0],r[1]
    fout.write(r[0]+str(r[1])+"\n")
    
fin.close()
fout.close()