Python

Pythonで文字列、数値をゼロ埋め(ゼロパディング)する方法

Pythonで文字列(str)、数値(int)をゼロ埋め(ゼロパディング)したい

計算するのにゼロ埋めする必要は無いが、表示する場合は複数の値の桁数を合わせるためにゼロ埋めしたいこともあるだろう。

今回はPythonで文字列、数値をゼロ埋め(ゼロパディング)する方法について紹介する。

この記事を書いている人


からさん
システムエンジニア、AIエンジニアと、IT業界で10年以上働いている中堅。PythonとSQLが得意。最近GCPを色々と習得中。

記事を読むメリット

Pythonで文字列、数値をゼロ埋め(ゼロパディング)する方法がわかる


Pythonで文字列、数値をゼロ埋め(ゼロパディング)する方法

Pythonで文字列、数値をゼロ埋めする方法には以下のようなものがある。

ゼロ埋めする方法

  • zfill()で右寄せゼロ埋めする
  • rjust(), ljust(), center()で任意の位置に寄せる
  • format()で書式変換する

  • 各方式について以下のデータを使って解説していく。

    # 数値
    num1 = 1
    num2 = 12
    num3 = 123
    
    print(num1)
    print(num2)
    print(num3)
    # 1
    # 12
    # 123
    



    zfill()で右寄せゼロ埋めする

    zfill() は右寄せゼロ埋めするための関数。

    str.zfill(width)
    長さが width になるよう ASCII '0' で左詰めした文字列のコピーを返します。先頭が符号接頭辞 ('+'/'-') だった場合、 '0' は符号の前ではなく 後 に挿入されます。width が len(s) 以下の場合元の文字列を返します。

    参考:組み込み型 — Python 3.9.1 ドキュメント


    この説明にあるように zfill() 文字列(str)型で使用できる。

    str_num1 = str(num1).zfill(3)
    print(str_num1)
    # 001
    

    整数(int)型に使用するとエラーになる。

    num1.zfill(3)
    # AttributeError: 'int' object has no attribute 'zfill'
    


    ゼロ埋めするだけなら zfill() を使っていれば十分ですね
    からさん



    rjust(), ljust(), center()で任意の位置に寄せる

    rjust(), ljust(), center() で任意の位置に寄せることもできる。

    str.rjust(width[, fillchar])¶
    width の長さをもつ右寄せした文字列を返します。パディングには fillchar で指定された文字(デフォルトでは ASCII スペース)が使われます。 width が len(s) 以下の場合、元の文字列が返されます。

    参考:組み込み型 — Python 3.9.1 ドキュメント

    # rjust, ljust, center
    
    str_num2 = str(num2)
    print(str_num2)
    # 12
    
    print(str_num2.rjust(4,"0"))
    print(str_num2.ljust(4,"0"))
    print(str_num2.center(4,"0"))
    # 0012
    # 1200
    # 0120
    


    第2引数を 0 以外の文字で指定すればゼロ以外の文字で埋めることもできる。

    print(str_num2.rjust(4,"x"))
    # xx12
    



    format()で書式変換する

    format() で書式変換することもできる。

    format(数値,"書式") とすると指定した書式の形式で表示される。

    06 は10進数で6桁。
    06f は小数点以下6桁表示。
    06x は16進数で6桁表示。

    #format
    
    print(format(num3,"06"))
    print(format(num3,"06f"))
    print(format(num3,"06x"))
    # 000123
    # 123.000000
    # 00007b
    


    他にも "文字列 {:書式}".format(変数) だと {} の中に変数を当て込んだ文字列を作ることができ、さらに {} の中で指定した書式になる。

    print("zero padding : {:06}".format(num3))
    # zero padding : 000123
    

    format() については以前の記事でも触れているので参考にしてほしい。



    まとめ

    今回は「Pythonで文字列、数値をゼロ埋め(ゼロパディング)する方法」について紹介した。

    やり方は以下の通り。

    ゼロ埋めする方法

  • zfill()で右寄せゼロ埋めする
  • rjust(), ljust(), center()で任意の位置に寄せる
  • format()で書式変換する

  • 他にもやり方はあるが、ゼロ埋めするだけであれば zfill() を使っておけば問題無い



    Pythonのコードが出来上がったら次は定期的に実行させる環境に移してコードを実行すると思う。

    ランニングコストをかけてネット上に実行環境を作るのもありだが、小型PCを購入してランニングコストを下げるのも1つの手かと思われる。

    小型PCの魅力とオススメの機種について書いた記事があるので、もしよければ参考にして欲しい。

    役に立ったらシェアしてくれると励みになります。

    にほんブログ村 IT技術ブログへ

    -Python

    Translate »

    © 2021 ITips