wake-up-neo.com

Nummer mit führenden Nullen anzeigen

Gegeben:

a = 1
b = 10
c = 100

Wie zeige ich eine führende Null für alle Zahlen mit weniger als zwei Ziffern an?

Das ist,

01
10
100
686
ashchristopher

In Python 2 können Sie Folgendes tun:

print "%02d" % (1,)

Grundsätzlich ist% wie printf oder sprintf.


Für Python 3. + kann dasselbe Verhalten erreicht werden mit:

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

Für Python 3.6+ kann dasselbe Verhalten mit f-Strings erreicht werden:

print(f"{1:02d}")
713
Jack M.

Sie können str.zfill verwenden:

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

druckt:

01
10
100
762
Datageek

In Python 2.6+ und 3.0+ würden Sie die String-Methode format() verwenden:

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

oder mit dem eingebauten (für eine einzelne Nummer):

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

In der Dokumentation PEP-3101 finden Sie die neuen Formatierungsfunktionen.

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

druckt:

01
10
100
116
Kresimir

Oder dieses:

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

89
ajd

In Python> = 3.6 können Sie dies mit den neuen f-Strings tun, die mit folgendem Befehl eingeführt wurden:

f'{val:02}'

die die Variable mit dem Namen val mit einem fill Wert von 0 und einer width von 2 druckt. 

Für Ihr spezielles Beispiel können Sie dies in einer Schleife machen:

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

welche druckt:

01 
10
100

Weitere Informationen zu f-Strings finden Sie unter PEP 498 , wo sie eingeführt wurden.

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

ergebnisse in:

01
10
100

Lesen Sie Weitere Informationen zur String-Formatierung mit% in der Dokumentation.

50
nosklo

Der pythonische Weg, dies zu tun:

str(number).rjust(string_width, fill_char)

Auf diese Weise wird die ursprüngliche Zeichenfolge unverändert zurückgegeben, wenn ihre Länge größer als Zeichenfolge ist. Beispiel:

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

Ergebnisse:

01
10
100
40
ZuLu

Oder eine andere Lösung. 

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

Verwenden Sie eine Formatzeichenfolge - http://docs.python.org/lib/typesseq-strings.html

Zum Beispiel:

python -c 'print "%(num)02d" % {"num":5}'
5
Airsource Ltd
width = 5
num = 3
formatted = (width - len(str(num))) * "0" + str(num)
print formatted
2
nvd

So mache ich es:

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

Im Grunde genommen nimmt zfill die Anzahl der führenden Nullen, die Sie hinzufügen möchten. Es ist also einfach, die größte Zahl zu verwenden, sie in eine Zeichenfolge umzuwandeln und die Länge wie folgt zu ermitteln:

 Python 3.6.5 (Standardeinstellung: 11. Mai 2018, 04:00:52) 
 [GCC 8.1.0] unter Linux 
 Geben Sie "help", "copyright", "credits" oder "license" ein. Weitere Informationen .
 >>> gesamt = 100 
 >>> drucken (str (1) .zfill (len (str (gesamt)))) 
 001 
 >>> gesamt = 1000 
 >>> print (str (1) .zfill (len (str (total)))) 
 0001 
 >>> total = 10000 
 >>> print (str (1). zfill (len (str (total)))) 
 00001 
 >>> 
1
Roberto

Benutzen:

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

Oder mit dem Modul math:

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

df ['Col1'] = df ['Col1']. apply (Lambda x: '{0: 0> 5}'. Format (x)) (die 5 ist die Anzahl der Gesamtziffern)

Ich habe diesen Link benutzt: http://www.datasciencemadesimple.com/add-leading-preceding-zeros-python/

!/usr/bin/env python3

Copyright 2009-2017 BHG http://bw.org/

x = 5

while (x <= 15):
    a =  str("{:04}".format(x))
    print(a)
    x = x + 1;

der gleiche Code wie ein Bild

0
Rupert Russell
s=1    
s="%02d"%s    
print(s)

das Ergebnis wird 01 sein

0
nidheesh

Basierend auf Ihren Tipps, lasse ich meine Arbeit funktionieren. Vielen Dank.

def number2binlist(number, leading = 8):
    #Convert Binary to 0/1 list array with leading zeros, default 8
    bin2dec = int(str(bin(number))[2:])
    theformat = "{:0"+str(leading)+"d}"
    dec2str = list(theformat.format(bin2dec))
    output = [int(z) for z in dec2str]
    output.reverse()
    return output
0