Le formatage des chaînes de caractères avec python.
Bonjour, j'ai quelques difficultés de compréhension sur la partie "Le formatage des chaînes de caractères avec python."
Je me permets d'indiquer ce qui me semble être acquis dans le cas où il faudrait y mettre également un peu d'ordre.
-Je n'ai pas réussi à trouver d'explication sur le terme "padder" de façon générale ou en lien avec Python.
-Dans ce module, un exemple nous est renseigné :
nombre = 12
nombre_pad = "{:04d}".format(nombre)
-<u>Ce que je pense avoir compris :</u>
- Nous stockons la valeur de la variable "nombre"(int) dans cette nouvelle variable(str) "nombre_pad" en la formatant.
- Les deux points ( : ) sont utilisés pour entrer dans le mode de formatage.
- La valeur "4" de la variable "nombre_pad" représente le nombre de chiffre total à l'affichage.
-<u>Ce que je cherche encore à comprendre :</u>
- La valeur "0" stockée dans la variable "nombre_pad" (après avoir fait plusieurs tests, j'ai seulement constaté que cette valeur "0" était indispensable au fonctionnement de la valeur "4" et que lors de l'affichage, une (ou plusieurs) tabulation(s) résultait dépendamment de toute autre valeur renseignée)
- La raison de l'utilisation de la lettre "d" (dont on peut se passer ici, pour le bon fonctionnement du formatage)
- La signification de la lettre "d" (après quelques recherches, j'ai eu plusieurs propositions : d(décimal/integer), s(str), f(float), g(general), d'ailleurs, dans quel cas spécifique devrions nous utiliser "g"? J'ai vu que dans cet exemple, "g" pouvait être utilisé pour obtenir le même résultat.)
Merci
Bonjour Céline !
Effectivement, désolé pour cet anglicisme, la documentation officielle de Python parle de « remplissage », mais j'ai vu le terme "padding" utilisé beaucoup plus fréquemment même dans des discussions entre développeurs francophone, raison pour laquelle j'ai décidé de garder ce terme.
Mais l'idée est effectivement celle d'un "remplissage" : on part d'un nombre avec 2 chiffres et on souhaite le "remplir" de plusieurs zéros jusqu'à une longueur donnée.
Cela est pratique notamment lorsque l'on traite avec des séquences (séquence d'images, séquence de fichiers, etc) pour les forcer à avoir la même longueur : au lieu d'avoir 1 et 12 (donc 1 chiffre et 2 chiffres), on formatte en 01 et 12, pour rester constant.
Concernant la question du formattage, les deux points indiquent effectivement qu'on souhaite modifier la valeur passée à la méthode format. À noter que le fonctionnement est le même en utilisant la syntaxe des f-string dont je parle plus tard dans la formation (et on comprend ainsi mieux la nécessité des deux points pour séparer la valeur de l'indication du style de formattage) :
Avec une f-string :
>>> f"{15:04d}"
'0015'
Le 0 indique qu'on souhaite remplir l'espace supplémentaire de 0 au lieu d'un espace. Par défaut si vous enlevez le 0, Python remplira avec un espace :
>>> f"{15:4d}"
' 15'
Le d signifie "decimal" donc effectivement dans le sens de "integer". En comparaison avec le "f" de "float" qui est utilisé pour les nombres "flottants" (nombres décimaux, à virgules).
Le "f" est surtout utilisé avec un autre type de formattage pour indiquer le nombre maximum de chiffres après la virgule :
>>> f"{15.854712:.3f}"
'15.855'
On indique ici avec la syntaxe .3f qu'on ne souhaite que 3 nombres après la virgule.
J'espère que c'est plus clair pour toi, après ne t'en fais pas, nul besoin de se souvenir de tout ça sur le bout des doigts. L'idée ici est surtout de montrer les possibilités offertes par Python en terme de formattage. Mais ne t'embête pas à retenir tout ça par coeur. Il est important de savoir que ce genre de choses sont possibles et existent et après quand tu as besoin de ce genre d'outils dans un cas concret, tu sais qu'ils existent et tu refais quelques recherches pour retrouver la syntaxe exacte.
À ce sujet, un bon site qui répertorie les différentes options de formattage disponible (en anglais) :
Bonne continuation !
Bonjour Céline,
en plus de la réponse de Thibault tu peux aller voir aussi ce fil de discussion https://www.docstring.fr/accompagnement/questions/46/
Un étudiant se posait la même question et j'avais essayé de faire un exemple pratique pour un cas d'application.
A bientôt
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte