Donné:
a = 1
b = 10
c = 100
Comment afficher un zéro en tête pour tous les nombres de moins de deux chiffres?
C'est,
01
10
100
En Python 2, vous pouvez faire:
print "%02d" % (1,)
Fondamentalement,% est comme printf
ou sprintf
.
Pour Python 3. +, le même comportement peut être obtenu avec:
print("{:02d}".format(1))
Pour Python 3.6+, le même comportement peut être obtenu avec les chaînes de caractères f:
print(f"{1:02d}")
Vous pouvez utiliser str.zfill
:
print str(1).zfill(2)
print str(10).zfill(2)
print str(100).zfill(2)
impressions:
01
10
100
print('{:02}'.format(1))
print('{:02}'.format(10))
print('{:02}'.format(100))
impressions:
01
10
100
Ou ca:
print '{0:02d}'.format(1)
Dans Python> = 3.6, vous pouvez le faire de manière succincte avec les nouvelles chaînes f introduites en utilisant:
f'{val:02}'
qui imprime la variable nommée val
avec un fill
valeur de 0
et un width
de 2
.
Pour votre exemple spécifique, vous pouvez le faire en boucle:
a, b, c = 1, 10, 100
for val in [a, b, c]:
print(f'{val:02}')
qui imprime:
01
10
100
Pour plus d'informations sur les chaînes de caractères, consultez PEP 498 où elles ont été introduites.
x = [1, 10, 100]
for i in x:
print '%02d' % i
résulte en:
01
10
100
Lisez plus d’informations sur le formatage des chaînes en utilisant% dans la documentation.
La façon pythonique de faire ceci:
str(number).rjust(string_width, fill_char)
De cette façon, la chaîne d'origine est renvoyée sous forme inchangée si sa longueur est supérieure à string_width. Exemple:
a = [1, 10, 100]
for num in a:
print str(num).rjust(2, '0')
Résultats:
01
10
100
Ou une autre solution.
"{:0>2}".format(number)
Utilisez une chaîne de formatage - http://docs.python.org/lib/typesseq-strings.html
Par exemple:
python -c 'print "%(num)02d" % {"num":5}'
width = 5
num = 3
formatted = (width - len(str(num))) * "0" + str(num)
print formatted
Voici comment je le fais:
str(1).zfill(len(str(total)))
Fondamentalement, zfill prend le nombre de zéros que vous souhaitez ajouter. Il est donc facile de prendre le plus grand nombre, de le transformer en chaîne et d'obtenir la longueur, comme ceci:
Python 3.6.5 (par défaut, 11 mai 2018, 04:00:52) [GCC 8.1.0] sur linux Tapez "aide", "copyright", "crédits" ou "licence" pour plus d'informations . >>> total = 100 >>> print (str (1) .zfill (len (str (total)))) 001 >>> total = 1000 >>> print (str (1) .zfill (len (str (total))))) 0001 >>> total = 10000 >>> print (str (1). zfill (len (str (total)))) 00001 >>>
Utilisation:
'00'[len(str(i)):] + str(i)
Ou avec le module math
:
import math
'00'[math.ceil(math.log(i, 10)):] + str(i)
df ['Col1'] = df ['Col1']. s'applique (lambda x: '{0: 0> 5}'. format (x)) (le nombre 5 correspond au nombre total de chiffres)
J'ai utilisé ce lien: 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;
s=1
s="%02d"%s
print(s)
le résultat sera 01
Sur la base de vos conseils, je laisse mon travail fonctionner. Je vous remercie.
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