Getal weergeven met voorloopnullen

Gegeven:

a = 1
b = 10
c = 100

Hoe geef ik een voorloopnul weer voor alle getallen met minder dan twee cijfers?

Dit is de output die ik verwacht:

01 
10
100

Antwoord 1, autoriteit 100%

In Python 2 (en Python 3) kun je het volgende doen:

print "%02d" % (1,)

In principe is %vergelijkbaar met printfof sprintf(zie docs).


Voor Python 3.+ kan hetzelfde gedrag ook worden bereikt met format:

print("{:02d}".format(1))

Voor Python 3.6+ kan hetzelfde gedrag worden bereikt met f-strings :

print(f"{1:02d}")

Antwoord 2, autoriteit 78%

U kunt str.zfill:

print(str(1).zfill(2))
print(str(10).zfill(2))
print(str(100).zfill(2))

afdrukken:

01 
10
100

Antwoord 3, autoriteit 27%

In Python 2.6+ en 3.0+ gebruikt u de format()tekenreeksmethode:

for i in (1, 10, 100):
    print('{num:02d}'.format(num=i))

of met behulp van de ingebouwde (voor een enkel nummer):

print(format(i, '02d'))

Zie de PEP-3101documentatie voor de nieuwe opmaakfuncties.

p>


Antwoord 4, autoriteit 10%

print('{:02}'.format(1))
print('{:02}'.format(10))
print('{:02}'.format(100))

afdrukken:

01 
10
100

Antwoord 5, autoriteit 7%

Of dit:

print '{0:02d}'.format(1)


Antwoord 6, autoriteit 6%

In Python >= 3.6kun je dit beknopt doen met de nieuwe f-strings die zijn geïntroduceerd met:

f'{val:02}'

die de variabele met de naam valafdrukt met een fillwaarde van 0en een widthvan 2.

Voor jouw specifieke voorbeeld kun je dit mooi in een lus doen:

a, b, c = 1, 10, 100
for val in [a, b, c]:
    print(f'{val:02}')

die wordt afgedrukt:

01 
10
100

Voor meer informatie over f-strings, ga naar PEP 498waar ze werden geïntroduceerd.


Antwoord 7, autoriteit 4%

x = [1, 10, 100]
for i in x:
    print '%02d' % i

resulteert in:

01 
10
100

Lees meer informatie over tekenreeksopmaak met %in de documentatie.


Antwoord 8, autoriteit 4%

De Pythonische manier om dit te doen:

str(number).rjust(string_width, fill_char)

Op deze manier wordt de originele string ongewijzigd geretourneerd als de lengte groter is dan string_width. Voorbeeld:

a = [1, 10, 100]
for num in a:
    print str(num).rjust(2, '0')

Resultaten:

01 
10
100

Antwoord 9, autoriteit 2%

Of een andere oplossing.

"{:0>2}".format(number)

Antwoord 10

Dit is hoe ik het doe:

str(1).zfill(len(str(total)))

In principe neemt zfill het aantal voorloopnullen dat je wilt toevoegen, dus het is gemakkelijk om het grootste getal te nemen, er een string van te maken en de lengte te krijgen, als volgt:

Python 3.6.5 (standaard, 11 mei 2018, 04:00:52)
[GCC 8.1.0] op linux
Typ "help", "copyright", "credits" of "licentie" voor meer informatie.
>>> totaal = 100
>>> print(str(1).zfill(len(str(totaal))))
001
>>> totaal = 1000
>>> print(str(1).zfill(len(str(totaal))))
0001
>>> totaal = 10000
>>> print(str(1).zfill(len(str(totaal))))
00001
>>>

Antwoord 11

Je kunt dit doen met f strings.

import numpy as np
print(f'{np.random.choice([1, 124, 13566]):0>8}')

Hiermee wordt een constante lengte van 8 afgedrukt en de rest wordt opgevuld met 0.

00000001
00000124
00013566

Antwoord 12

Gebruik een opmaaktekenreeks – http://docs.python.org/lib/typesseq -strings.html

Bijvoorbeeld:

python -c 'print "%(num)02d" % {"num":5}'

Antwoord 13

width = 5
num = 3
formatted = (width - len(str(num))) * "0" + str(num)
print formatted

Antwoord 14

Gebruik:

'00'[len(str(i)):] + str(i)

Of met de module math:

import math
'00'[math.ceil(math.log(i, 10)):] + str(i)

Antwoord 15

Al deze maken de tekenreeks “01”:

>python -m timeit "'{:02d}'.format(1)"
1000000 loops, best of 5: 357 nsec per loop
>python -m timeit "'{0:0{1}d}'.format(1,2)"
500000 loops, best of 5: 607 nsec per loop
>python -m timeit "f'{1:02d}'"
1000000 loops, best of 5: 281 nsec per loop
>python -m timeit "f'{1:0{2}d}'"
500000 loops, best of 5: 423 nsec per loop
>python -m timeit "str(1).zfill(2)"
1000000 loops, best of 5: 271 nsec per loop
>python
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32

Antwoord 16

df['Col1']=df['Col1'].apply(lambda x: '{0:0>5}'.format(x))

De 5 is het aantal totale cijfers.

Ik heb deze link gebruikt:
http://www.datasciencemadesimple.com/add-leading-preceding-zeros -Python /


Antwoord 17

Als u aan het omgaan met cijfers die een of twee cijfers zijn:

'0'+str(number)[-2:]of '0{0}'.format(number)[-2:]

Other episodes