2011-02-28 4 views
8

J'ai str qui sont comme «60» ou «100». J'ai besoin de la str pour être '00060' et '00100',Réglage de la longueur fixe avec python

Comment puis-je faire cela? le code est quelque chose comme ceci: J'utilisais '0' + '0' + '0' comme prise. maintenant besoin de fixer d == 0006000100

a4 ='60' 
    a5 ='100' 

    d=('0'+'0'+'0'+a4+'0'+'0'+a5) 

Répondre

23

Puisque vous êtes la manipulation des chaînes, str.zfill() fait exactement ce que vous voulez.

>>> s1, s2 = '60', '100' 
>>> print s1.zfill(5), s2.zfill(5) 
00060 00100 
+2

+1 Neat, ne savait pas à ce sujet – Cameron

10

Comme ceci:

num = 60 
formatted_num = u'%05d' % num 

Voir la pour plus d'informations sur le formatage des nombres sous forme de chaînes.

Si votre numéro est déjà une chaîne (comme votre question mise à jour indique), vous pouvez pad avec des zéros à la bonne largeur en utilisant la méthode de chaîne rjust:

num = u'60' 
formatted_num = num.rjust(5, u'0') 
+0

il vient comme '60' je combine l'exemple 0006000100, – Merlin

+0

le fichier de données a '60' – Merlin

+0

@user: Pourriez-vous poster le code que vous utilisez? – Cameron

0

La lecture de votre documentation Python préféré appréciée:

http://docs.python.org/library/string.html#formatstrings

"" »

Si le champ largeur est précédé par un zéro ('0') caractère, cela permet un remplissage nul. Ceci est équivalent à un type d'alignement de '=' et un caractère de remplissage de '0'. « » »

2

Si « 60 » est déjà une chaîne, vous devez le convertir en un certain nombre avant d'appliquer la mise en forme la plus pratique fonctionne comme le printf de C:.

a ="60" 
b = "%05d" % int(a) 
0

S'il est déjà une chaîne que vous pouvez utiliser la méthode .zfill().

myval.fill(5) 
Questions connexes