Comment tronquer une chaîne en utilisant str.format
en Python? Est-ce même possible?
Il y a un paramètre width
mentionné dans le Format Specification Mini-Language :
format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]
...
width ::= integer
...
Mais le spécifier ne fonctionne apparemment que pour le remplissage, pas pour la tronquer:
>>> '{:5}'.format('aaa')
'aaa '
>>> '{:5}'.format('aaabbbccc')
'aaabbbccc'
C'est donc plus une largeur minimale qu'une largeur vraiment.
Je sais que je peux découper des chaînes, mais les données que je traite ici sont complètement dynamiques, y compris la chaîne de format et les arguments qui entrent. Je ne peux pas simplement aller en découper explicitement une.
Utilisation .precision
au lieu:
>>> '{:5.5}'.format('aaabbbccc')
'aaabb'
Selon la documentation du Format Specification Mini-Language :
précision est un nombre décimal indiquant le nombre de chiffres à afficher après le point décimal pour une valeur à virgule flottante formatée avec
'f'
et'F'
, ou avant et après la virgule décimale pour une valeur à virgule flottante formatée avec'g'
ou'G'
. Pour les types non numériques, le champ indique la taille maximale du champ - en d'autres termes, combien de caractères seront utilisés à partir du contenu du champ. Le precision n'est pas autorisé pour les valeurs entières.