与えられた:
a = 1
b = 10
c = 100
2桁未満のすべての数値に先行ゼロを表示するにはどうすればよいですか?
これは私が期待している出力です:
01
10
100
与えられた:
a = 1
b = 10
c = 100
2桁未満のすべての数値に先行ゼロを表示するにはどうすればよいですか?
これは私が期待している出力です:
01
10
100
回答:
Python 2(およびPython 3)では、次のことができます。
print "%02d" % (1,)
基本的に%はprintf
or と似ていますsprintf
(docsを参照)。
Python 3. +の場合、次のコマンドでも同じ動作を実現できますformat
。
print("{:02d}".format(1))
Python 3.6以降では、f-stringsを使用して同じ動作を実現できます。
print(f"{1:02d}")
x = "%02d.txt" % i
TypeErrorを発生させます(「str」オブジェクトと「int」オブジェクトを連結できません)が発生x = "%02d.txt" % (i,)
しません。面白い。それはどこに文書化さ
%
文字列フォーマッターを使用しているときに安全になることを知りませんでした。
使用できますstr.zfill
:
print(str(1).zfill(2))
print(str(10).zfill(2))
print(str(100).zfill(2))
プリント:
01
10
100
"{1:02d}"
は2
(動的関数を作成する場合のように)の代わりに変数を持つことができないため、これが正しい答えになるはずです。
Python 2.6+および3.0+では、format()
stringメソッドを使用します。
for i in (1, 10, 100):
print('{num:02d}'.format(num=i))
または組み込みを使用する(単一の数値の場合):
print(format(i, '02d'))
新しいフォーマット関数については、PEP-3101のドキュメントを参照してください。
print('{:02}'.format(1))
print('{:02}'.format(10))
print('{:02}'.format(100))
プリント:
01
10
100
One zero:{0:02}, two zeros: {0:03}, ninezeros: {0:010}'.format(6)
print '{:02}'.format(1)
または別のソリューション。
"{:0>2}".format(number)
"{0:0>2}".format(number)
誰かの意志がnLeadingZerosを望んでいるならば、彼らはまた、行うことができます注意する必要があります"{0:0>{1}}".format(number, nLeadingZeros + 1)
フォーマット文字列を使用-http://docs.python.org/lib/typesseq-strings.html
例えば:
python -c 'print "%(num)02d" % {"num":5}'
これが私のやり方です:
str(1).zfill(len(str(total)))
基本的に、zfillは追加する先行ゼロの数を取得するため、次のように最大数を取得して文字列に変換し、長さを取得するのは簡単です。
Python 3.6.5(デフォルト、2018年5月11日、04:00:52) [GCC 8.1.0] Linux版 詳細については、「help」、「copyright」、「credits」、または「license」と入力してください。 >>>合計= 100 >>> print(str(1).zfill(len(str(total)))) 001 >>>合計= 1000 >>> print(str(1).zfill(len(str(total)))) 0001 >>>合計= 10000 >>> print(str(1).zfill(len(str(total)))) 00001 >>>
df['Col1']=df['Col1'].apply(lambda x: '{0:0>5}'.format(x))
5は総桁数です。
私はこのリンクを使用しました:http : //www.datasciencemadesimple.com/add-leading-preceding-zeros-python/