Pythonの小技 -文字列フォーマットの自動生成-

| | Comments (0) | TrackBacks (0)
loggingモジュールの勉強中に、ログに書き込むための文字列フォーマットを
いちいち書くのがめんどくさくなったので、自動で作れないか試してみました。


Pythonでは、
     a = 10 print "%d" % a
と書くことで、変数の内容を表示するとこができます。

また、
     dic = {"name" : "hayashi"}
という辞書があったときに
     print "%(name)s" % dic
このように、カッコの中にキーを書くと、対応する値を表示できます。
この辞書のキーに対応した値を入れられる機能を使って、文字列フォーマットを 作ってみました。

用意するもの
辞書のキーリスト  key_list = ['name', 'age', 'tall']
辞書の値のリスト   val_list = ['neko', 3, 25]
上の二つのリストは、フォーマットに並べたい順番に入れてください

空の文字列           fmt = ""

loggingモジュール import logging

使う関数
dict() : 辞書作成に使います。
zip() : 二つのリストから、一つの辞書を作成するために使います。
logging.warning() : コンソールに書きだして確認してみます。

import logging

key_list = ['name', 'age', 'tall']
val_list = ['neko', 3, 25]
fmt = ""

# 辞書作成
mydic = dict(zip(key_list, val_list))

# 文字列フォーマット作成
for key in key_list:
    fmt += "%%(%s)s " % key

# コンソールに表示してみる
logging.warning(fmt % mydic)

WARNING:root:neko 3 25     と表示されれば成功です。

文字として'%'を使いたいときには2つ重ねる必要があるのでご注意下さい。
また、すでに作った辞書からも作ることができます。
順番が指定できないので、フォーマットを作るときに
    fmt += "%s = %%(%s)s " % (key, key)
とすれば、 キー = 対応した値 の形でログ出力ができて確認しやすくなります。

複雑なフォーマットを作ることには向いていませんが、即席のログを作るときなどにいかがでしょうか。

0 TrackBacks

Listed below are links to blogs that reference this entry: Pythonの小技 -文字列フォーマットの自動生成-.

TrackBack URL for this entry: http://lab.hde.co.jp/blog/mt-tb.cgi/58

Leave a comment

About this Entry

This page contains a single entry by hayashi published on September 5, 2008 12:00 PM.

あなたとは違うんですメーカーを作ってみる、の巻 was the previous entry in this blog.

多段の中間CA証明書作成 -動作検証編- is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.