Dorian Fevrier's blog - Mot-clé - stringJe m’appelle FEVRIER Dorian, je suis infographiste 3D passionné par mon métier, l’informatique en général, l’internet, la programmation et l’évolution de tout ce petit monde. Vous trouverez sur ce blog des tutoriaux, mes coups de cœurs, avis, etc.2024-01-02T23:48:05+01:00FEVRIER Dorianurn:md5:695d9c73474c33ce3dab043823509c4bDotclearBourrage de zéros en Pythonurn:md5:7d76dbf541c02de6abd94166f7efa15a2009-02-28T21:42:00+01:002021-09-02T10:28:19+02:00NarannScript et codebourragedossiersfichiersfrpythonscriptstringzero<p><img src="https://www.fevrierdorian.com/blog/public/logos/Python_logo_150.png" alt="" style="float:left; margin: 0 1em 1em 0;" />Je vous propose une petite procédure en python qui permet d'effectuer un "bourrage de zéros" (ou "zero garbage") à une chaine de caractères. Ceci peut se révéler très pratique dans le cas où, (comme par hasard...) vous vouliez ajouter des zéros devant un chiffre donné pour naviguer dans des dossier (de plans par exemple), où que vous souhaitiez renommer des fichiers en masse (Pas juste dans un dossier hein? Il existe des logiciels qui le font très bien... Là je parle de renommer des dizaines de séquences d'images différentes dans des centaines de fichiers). Personnellement, j'utilise souvent cette procédure alors j'ai jugé utile d'en faire part à tous le monde.</p> <p>/EDIT 2009 04 21</p>
<p>Comme l'a dit Laurent dans son commentaire, il existe une fonction Python qui le fait déjà:</p>
<pre>[python]
print str(50).zfill(4)
>> "0050"</pre>
<p>Comme quoi, je me suis bien cassé les fesses pour rien... :seSentCon:</p>
<p>/FIN EDIT</p>
<h5>En quoi ça consiste?</h5>
<p>Et bien tout simplement, c'est une manière de récupérer une chaine de caractère (ressemblant à "005") depuis un chiffre de type "int" (dans notre exemple: 5).</p>
<h5>Let's go</h5>
<p>Je vous donne le code brut et j'expliquerai chacune des lignes ensuite.</p>
<pre>[python]
def fdZeroGarbage(toGarbage, zeroNumber):
toGarbageStr = str(toGarbage)
while len(toGarbageStr) < zeroNumber:
toGarbageStr = "0"+toGarbageStr
return toGarbageStr</pre>
<p>Vous pouvez l'exécuter puis lancer:</p>
<pre>[python]
>> fdZeroGarbage(50, 4)</pre>
<p>Ce qui renvoie:</p>
<pre>[python]
>> "0050"</pre>
<p>Explication des lignes:</p>
<pre>[python]
def fdZeroGarbage(toGarbage, zeroNumber):</pre>
<p>Cette ligne sert à définir le nom de la procédure ainsi que les arguments:</p>
<ul>
<li>fdZeroGarbage est le nom de la procédure.</li>
<li>toGarbage est la valeur de base.</li>
<li>zeroNumber est le nombre de caractère que devra contenir la chaine renvoyé par la procédure.</li>
</ul>
<pre>[python]
toGarbageStr = str(toGarbage)</pre>
<p>la fonction str() renvoie son contenu mais de type "string". (5 devient: "5" et donc, n'est plus un nombre, mais le caractère 5). Ici, nous créons une nouvelle variable (toGarbageStr) qui sera la version "stringué" de la valeur entré (toGarbage). Si cette procédure est inutile si l'entrée est déjà de type string, elle est cependant nécessaire pour la suite si ce n'est pas le cas.</p>
<pre>[python]
while len(toGarbageStr) < zeroNumber:</pre>
<p>La fonction len() renvoie la longueur de la chaine de caractère (ou de la liste, ou d'autres choses) donné. On comprend ici pourquoi l'argument de la procédure (toGarbage) doit être converti en string. En effet, comme le dis si bien le message d'erreur:</p>
<pre>[python]
>>> len(5)
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
len(5)
TypeError: object of type 'int' has no len()</pre>
<p>En revanche:</p>
<pre>[python]
>>> len("5")
1</pre>
<p>La ligne va exécuter le reste de la procédure: "Tant que la longueur de la chaine de caractère donné (toGarbageStr) est plus petite que le nombre de caractère voulu (zeroNumber)</p>
<pre>[python]
toGarbageStr = "0"+toGarbageStr</pre>
<p>On ajoute le caractère "0" à la chaine. ("5" devient: "05", "05" devient "005", etc...)</p>
<pre>[python]
return toGarbageStr</pre>
<p>A la fin de tout ça, on renvois la valeur de la chaine de caractère toGarbageStr.</p>
<h5>Conclusion</h5>
<p>Voici donc une petite procédure qui est utile car souvent répété. Avec ça vous pouvez faire pas mal de petites chose (renommage, tracking de fichier, etc...). C'est à vous de voir!</p>
<p>Ce modeste tuto est dans la ligné du <a href="https://www.fevrierdorian.com/blog/index.php?post/2009/02/25/Cr%C3%A9er-des-folders-en-Python.">précédent</a>. A savoir, simple, rapide et, je l'espère, utile. (Vous pouvez même intégrer cette procédure dans le script <a href="https://www.fevrierdorian.com/blog/index.php?post/2009/02/25/Cr%C3%A9er-des-folders-en-Python.">précédent</a> si vous voulez utiliser des fonctions dans d'autres fonctions... :baffed:</p>
<p>N'hésitez pas à me laisser un commentaire si vous rencontrez des problèmes avec. :hehe:</p>
<p>A plus!</p>
<p>Dorian</p>