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...

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




2 件のコメント:

  1. 他にもありそうだなと思って調べてみましたが以下のような感じはどうですか。

    print 3452.zfill(8)
    とか
    print "%08d" % (3452)
    とか
    print "%(num)08d" % {'num':3452}
    とか

    返信削除
  2. 匿名さん

    むむむ、もっと簡単な方法があったとは。。。
    精進します!

    返信削除

Template Design: © 2007 Envy Inc.