2010年4月21日水曜日

Pythonで0埋めなどして固定サイズの文字列を作成

業務システムなど作っていると、CSV作成などで'00000013245'などの
固定長文字列を生成する場面が良くあります。
Pythonなら簡単です。

8文字の固定文字列を作る場合
>>aa = 3452
>>xx = ("00000000" + str(aa))[-8:]
>>print xx
00003452
>>

[-8:] というのは
「後ろから8文字目から(後ろから8文字目は含む)最後まで」
という意味です。

逆に
>>xx = ("00000000" + str(aa))[8:]
>>print xx
3452
>>

これは「前から8文字目から(8文字目は含まない)最後まで」
という意味です。

前からと後ろからで若干混乱気味になりますね(私はなるw)。

これは単にリストをスライスしているだけ(文字列もリストの一種)
ですので、普通のリストでも同じように出来ます。


--追記--
匿名さんからのコメントで以下の方法もあるよと指摘が。

print 3452.zfill(8)

print "%08d" % (3452)

print "%(num)08d" % {'num':3452}

そのものズバリの方法があるジャマイカ orz...

まったくもって勉強不足でございました。精進いたします!




2010年4月15日木曜日

Pythonでリストをループ処理するときに添字も取得する方法

例えば、

datas = ["石田","北島","佐藤","田中","中野","本田"]
i = 0
for data in datas:
    i += 1
    print u"出席番号:" + str(i) + u" 名前:" + data

これは結構ダサいよね。

これはこんなふうに書ける。

datas = ["石田","北島","佐藤","田中","中野","本田"]
for i,data in enumerate(datas):
    print u"出席番号:" + str(i+1) + u" 名前:" + data

美しくなった(^^)/




2010年4月9日金曜日

Blogをはてな->Bloggerに移行。

3年くらいずっとはてダを使っていたのですが、
ここBloggerに移しました。

最近のはてなの重さはちょっと異常。
あれではどんどんユーザー逃げていくんじゃないだろうか。
ある程度減ったら重いのも解消されるかもしれないけど、
それじゃあ本末転倒だしなぁ。

はてなは決して嫌いじゃないので改善されないか待ってたんですけど、カメラを買い替えてWebアルバムをPicasaに替えたこともあってこちらに移してしまった。。。。

こちらは表示も軽快だし、管理画面も割と使いやすいしこれまた軽い。

Webサービスはレスポンスが第一だよねぇ。



Template Design: © 2007 Envy Inc.