« ナビゲーション文字の部分拡大 | トップページ | 正規表現文字列の集合に含まれるかどうかの判定 »

2006/02/14

Pythonによる簡単なフィルタ

ブックマークに追加する

当ブログ管理人は仕事上、時々、簡単なフィルタを書く時がある。普通はgrepや、Gawkを使った、ワンライナー(一行野郎とも言う)で済む場合が多いので、ほとんど書き捨てで済むが、時々、クロス集計が必要な状況があり、その場合、Pythonをよく使う。

とはいっても、Pythonを使う時もほとんど以下のパターンのスクリプトが多い

------------------------------------------------------------
#!/usr/local/bin/python
import sys, string

def main():
    tbl = {}
    for line in sys.stdin:
        rec = string.strip(line).split()
        if tbl.has_key(rec[0]) == False:
            tbl[rec[0]] = []
            tbl[rec[0]].append(rec[1])
        else:
            tbl[rec[0]].append(rec[1])
    #
    for key, value in tbl.iteritems():
        print "%s\t%s" % (key, value)

if __name__ == "__main__":
    main()
------------------------------------------------------------

このパターンの場合、Dictionary変数に項目を放り込んでいき、全ての行を読み込んだ後に、クロス集計等の処理をさせるようにしている。 このパターンの応用例としては、ログの集計や分類だけでなく、BBSのログ変換等もあり、結構重宝している。
以前はこの手のフィルタを書くときにはPerlを使用していたが、Pythonだと、細かいロジックを確認しながら、スクリプトを組み上げることが可能なので、最近はもっぱら、Pythonを使用している。


●お探し物は見つかりましたか?まだの方は以下の検索をご利用下さい。
 
当ブログ内 (within this blog) Web
●当ブログのRSSフィードをお手持ちのRSSリーダーにご登録いただくと、エントリ追加時のみ更新通知が届くため、確認の手間が省けます。よろしければ、どうぞ。
当ブログのRSSフィード
●当ブログの更新情報+α(deliciousのブックマーク他)はTwitter経由でも確認できます。是非フォローしてください。(実はRSSフィードよりも更新が早かったりします)

|

Python」カテゴリの記事

blog comments powered by Disqus


●Google広告


●その他の広告



トラックバック

この記事のトラックバックURL:

●トラックバックされる方へのご注意
本文中でこのエントリのアドレスを引用してください。引用(言及リンク)がない場合はスパム(迷惑行為)として削除します。
なお、迷惑行為かどうかを人力で判定しているため、トラックバックが反映されるまでに少々、お時間を頂いています。
For foreigners: If you would like to trackback to this entry, please include permlink of this entry in your entry. If your entry doesn't include this permlink, I will delete your trackback as spam.

この記事へのトラックバック一覧です: Pythonによる簡単なフィルタ:

 
Google