ලබා දී ඇත්තේ:
a = 1
b = 10
c = 100
ඉලක්කම් දෙකකට වඩා අඩු සියලුම සංඛ්යා සඳහා ප්රමුඛ ශුන්යයක් පෙන්වන්නේ කෙසේද?
මම බලාපොරොත්තු වන ප්රතිදානය මෙයයි:
01
10
100
ලබා දී ඇත්තේ:
a = 1
b = 10
c = 100
ඉලක්කම් දෙකකට වඩා අඩු සියලුම සංඛ්යා සඳහා ප්රමුඛ ශුන්යයක් පෙන්වන්නේ කෙසේද?
මම බලාපොරොත්තු වන ප්රතිදානය මෙයයි:
01
10
100
Answers:
පයිතන් 2 (සහ පයිතන් 3) හි ඔබට කළ හැක්කේ:
print "%02d" % (1,)
මූලික වශයෙන් % සමාන printf
හෝ sprintf
( ලියකියවිලි බලන්න ).
පයිතන් 3. + සඳහා, එකම හැසිරීම ද සමඟින් සාක්ෂාත් කරගත හැකිය format
:
print("{:02d}".format(1))
පයිතන් 3.6+ සඳහා එකම හැසිරීම f-string වලින් ලබා ගත හැකිය :
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
(ඔබ ගතික ශ්රිතයක් නිර්මාණය කරන්නේ නම් වැනි).
"{0:0{1}}"
. දෙවන තර්කය ලෙස ඔබට අවශ්ය ඕනෑම ශුන්ය සංඛ්යාවක් පසු කරන්න.
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)
දී Python> = 3.6 , ඔබ භාවිතා කරමින් හඳුන්වා දෙන ලදී බව නව F-කොන්දේසියකින් සංක්ෂිප්තව දක්වන්නේ මෙය කළ හැකි:
f'{val:02}'
වන නම, විචල්ය මුද්රණය කරයි val
සමඟ fill
වටිනාකම 0
සහ width
ක2
.
ඔබේ නිශ්චිත උදාහරණය සඳහා ඔබට මෙය ලූපයකින් මනාව කළ හැකිය:
a, b, c = 1, 10, 100
for val in [a, b, c]:
print(f'{val:02}')
මුද්රණය කරන:
01
10
100
එෆ්-නූල් පිළිබඳ වැඩි විස්තර සඳහා, ඒවා හඳුන්වා දුන් PEP 498 දෙස බලන්න .
x = [1, 10, 100]
for i in x:
print '%02d' % i
ප්රති results ල:
01
10
100
ප්රලේඛනයේ % භාවිතා කරමින් නූල් හැඩතල ගැන්වීම පිළිබඳ වැඩිදුර තොරතුරු කියවන්න .
නැත්නම් වෙනත් විසඳුමක්.
"{: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 ඔබට එකතු කිරීමට අවශ්ය ප්රමුඛ ශුන්ය ගණන ගනී, එබැවින් විශාලතම අංකය ගැනීම පහසුය, එය නූලක් බවට පත් කර දිග ලබා ගන්න, මේ ආකාරයට:
පයිතන් 3.6.5 (පෙරනිමිය, 2018 මැයි 11, 04:00:52) [GCC 8.1.0] ලිනක්ස් මත වැඩි විස්තර සඳහා "උදව්", "ප්රකාශන අයිතිය", "බැර" හෝ "බලපත්රය" ටයිප් කරන්න. >>> එකතුව = 100 >>> මුද්රණය කරන්න (str (1) .zfill (len (str (total))) 001 >>> එකතුව = 1000 >>> මුද්රණය කරන්න (str (1) .zfill (len (str (total))) 0001 >>> එකතුව = 10000 >>> මුද්රණය කරන්න (str (1) .zfill (len (str (total))) 00001 >>>
ඔබට මෙය f නූල් වලින් කළ හැකිය.
import numpy as np
print(f'{np.random.choice([1, 124, 13566]):0>8}')
මෙය නියත දිග 8 ක් මුද්රණය කරන අතර ඉතිරි කොටස ඊයම් සමඟ පෑඩ් කරයි 0
.
00000001
00000124
00013566
df['Col1']=df['Col1'].apply(lambda x: '{0:0>5}'.format(x))
5 යනු මුළු ඉලක්කම් ගණන වේ.
මම මෙම සබැඳිය භාවිතා කළෙමි: http://www.datasciencemadesimple.com/add-leading-preceding-zeros-python/
ඉලක්කම් එකක් හෝ දෙකක් ඇති සංඛ්යා සමඟ කටයුතු කරන්නේ නම්:
'0'+str(number)[-2:]
හෝ '0{0}'.format(number)[-2:]