Donné:
a = 1
b = 10
c = 100
Comment afficher un zéro non significatif pour tous les nombres de moins de deux chiffres?
Voici la sortie que j'attends:
01
10
100
python
integer
string-formatting
ashchristopher
la source
la source
x = "%02d.txt" % i
déclenche TypeError (ne peut pas concaténer les objets 'str' et 'int'), maisx = "%02d.txt" % (i,)
ne le fait pas. Intéressant. Je me demande où est documenté%
le formateur de chaînes.Vous pouvez utiliser
str.zfill
:impressions:
la source
"{1:02d}"
ne peut pas avoir de variables à la place de2
(comme si vous créez une fonction dynamique).Dans Python 2.6+ et 3.0+, vous utiliseriez la
format()
méthode de chaîne:ou en utilisant le intégré (pour un seul numéro):
Voir la documentation du PEP-3101 pour les nouvelles fonctions de formatage.
la source
impressions:
la source
One zero:{0:02}, two zeros: {0:03}, ninezeros: {0:010}'.format(6)
print '{:02}'.format(1)
Ou ca:
print '{0:02d}'.format(1)
la source
En Python> = 3.6 , vous pouvez le faire succinctement avec les nouvelles chaînes f qui ont été introduites en utilisant:
qui imprime la variable avec un nom
val
avec unefill
valeur de0
et unwidth
de2
.Pour votre exemple spécifique, vous pouvez le faire en boucle:
qui imprime:
Pour plus d'informations sur les chaînes f, jetez un œil au PEP 498 où elles ont été introduites.
la source
résulte en:
Lisez plus d'informations sur le formatage des chaînes à l'aide de% dans la documentation.
la source
La façon Pythonique de le faire:
De cette façon, la chaîne d'origine est retournée inchangée si sa longueur est supérieure à string_width. Exemple:
Résultats:
la source
Ou une autre solution.
la source
"{0:0>2}".format(number)
que j'inclue le paramètre pour plus de clarté - , si quelqu'un veut nLeadingZeros, il doit noter qu'il peut également le faire:"{0:0>{1}}".format(number, nLeadingZeros + 1)
Utilisez une chaîne de format - http://docs.python.org/lib/typesseq-strings.html
Par exemple:
la source
Voici comment je le fais:
Fondamentalement, zfill prend le nombre de zéros en tête 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:
la source
la source
Vous pouvez le faire avec des chaînes f .
Cela imprimera une longueur constante de 8 et remplira le reste avec l'interlignage
0
.la source
Utilisation:
Ou avec le
math
module:la source
Le 5 est le nombre total de chiffres.
J'ai utilisé ce lien: http://www.datasciencemadesimple.com/add-leading-preceding-zeros-python/
la source
S'il s'agit de nombres à un ou deux chiffres:
'0'+str(number)[-2:]
ou'0{0}'.format(number)[-2:]
la source