整数を先頭にゼロを付けた文字列としてフォーマットする最良の方法は?[重複]

StackOverflow https://stackoverflow.com/questions/733454

  •  06-09-2019
  •  | 
  •  

質問

この質問にはすでに答えがあります:

定義された桁数 ($cnt) の文字列を作成するには、整数に先頭のゼロを追加する必要があります。この単純な関数を PHP から Python に変換する最良の方法は次のとおりです。

function add_nulls($int, $cnt=2) {
    $int = intval($int);
    for($i=0; $i<($cnt-strlen($int)); $i++)
        $nulls .= '0';
    return $nulls.$int;
}

これができる機能はありますか?

役に立ちましたか?

解決

あなたはパッドにゼロの文字列をzfill()メソッドを使用することができます:

In [3]: str(1).zfill(2)
Out[3]: '01'

他のヒント

標準的な方法は、書式文字列修飾子を使用することです。これらのフォーマット文字列の方法は、(例えば、Cにおけるsprintf関数を経由して)ほとんどのプログラミング言語で利用可能であり、知って便利なツールです。

i = random.randint(0,99999)
print "%05d" % i

これが出力長さ5のストリング。

<時間>

編集:のpython2.6で上記もある

print '{0:05d}'.format(i)

を参照してください: https://docs.python.org/2/library/string。 HTML

あなたが最も可能性が高いだけで、あなたの整数をフォーマットする必要があります:

'%0*d' % (fill, your_int)

たとえば、

>>> '%0*d' % (3, 4)
'004'

はPython 3.6 F-文字列私たちは簡単に先行ゼロを追加することができます:

number = 5
print(f' now we have leading zeros in {number:02d}')

でこの機能については、この良い記事を見てください。

はPython 2.6は、このことができます:

add_nulls = lambda number, zero_count : "{0:0{1}d}".format(number, zero_count)

>>>add_nulls(2,3)
'002'

はPython 3の場合と超えて: str.zfill()はまだ最も読みやすいオプションです。

しかし、0ではありませんあなたがパッドに何かをしたい場合はどのような新しい強力なstr.format()、を調べることをお勧めているのですか?

    # if we want to pad 22 with zeros in front, to be 5 digits in length:
    str_output = '{:0>5}'.format(22)
    print(str_output)
    # >>> 00022
    # {:0>5} meaning: ":0" means: pad with 0, ">" means move 22 to right most, "5" means the total length is 5

    # another example for comparision
    str_output = '{:#<4}'.format(11)
    print(str_output)
    # >>> 11##

    # to put it in a less hard-coded format:
    int_inputArg = 22
    int_desiredLength = 5
    str_output = '{str_0:0>{str_1}}'.format(str_0=int_inputArg, str_1=int_desiredLength)
    print(str_output)
    # >>> 00022

少なくとも 2 つのオプションがあります。

  • str.zfill: lambda n, cnt=2: str(n).zfill(cnt)
  • % 書式設定: lambda n, cnt=2: "%0*d" % (cnt, n)

Python >2.5 の場合は、clorz の回答の 3 番目のオプションを参照してください。

内蔵のzfill。に

ワンライナーの代替

この機能はxを受け取り、それを文字列に変換し、長さが短すぎる場合のみ、と始まったばかりでゼロを追加します:

def zfill_alternative(x,len=4): return ( (('0'*len)+str(x))[-l:] if len(str(x))<len else str(x) )

それを要約すると - ビルド中:zfillは十分に良いですが、誰かが手でこれを実装する方法についての好奇心であれば、ここでのもう一つの例です。

直接的な変換は(機能と再び)のようになります。

def add_nulls2(int, cnt):
    nulls = str(int)
    for i in range(cnt - len(str(int))):
        nulls = '0' + nulls
    return nulls

これは私のPythonの関数です。

def add_nulls(num, cnt=2):
  cnt = cnt - len(str(num))
  nulls = '0' * cnt
  return '%s%s' % (nulls, num)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top