9
votes

Formatage des chaînes Python - `%`% `vs nouveau` str.format`

Nouveau formatage nous permet de faire ceci: '{:. <12}'. Format ('##') - caractère de remplissage en option.
Pouvons-nous faire cela en utilisant le vieux formatage?
(Je sais que nous pouvons remplir d'espaces '% - 12s'% '##' )

En outre, le vieux formatage nous permet de faire ceci: '% - * s'% (12, '##') - longueur variable.
Pouvons-nous faire cela en utilisant le nouveau formatage?


0 commentaires

3 Réponses :


7
votes

Pour faire de la longueur variable à l'aide de nouveaux formats, vous pouvez utiliser la nidification de remplaçants - xxx pré>

même espaces en tant que caractère de remplissage - p> xxx pré> > Veuillez noter que vous n'avez pas toujours besoin d'utiliser la nidification de remplaçants, vous pouvez les spécifier directement au format également - p> xxx pré>

Vous pouvez également spécifier la position de chaque argument à Décidez quel argument va là où. Exemple - P>

>>> '{2:{0}<{1}}'.format('.',12,'##')
'##..........'
>>> '{0:{1}<{2}}'.format('##','-',20)
'##------------------'


1 commentaires

Hmm, aimerait entendre ce qui ne va pas dans ma réponse.



3
votes

avec le format Vous pouvez nier les remplacements: xxx

donc format est plus puissant. Les caractères de remplissage en option ne sont pas possibles avec % .


0 commentaires

1
votes

Pour votre première partie de la question, vous pouvez rester aligner et utiliser un espace en tant que chargeur de remplissage à l'aide d'une largeur de 12:

'% - * s'% (12, '##') peut être remplacé par '{: <12}'. Format ('##') .

Pour la deuxième partie Non, vous ne pouvez pas spécifier le caractère de remplissage avec Formatage de style ancien.

Il y a un site joli site ici qui montre la plupart de ce que vous pouvez et ne peut pas faire avec l'ancien vs nouveau, un extrait qui couvre le rembourrage et l'alignement des chaînes:

rembourrage et alignement des chaînes

Par défaut Les valeurs sont formatées pour prendre autant de caractères que nécessaire pour représenter le contenu. Il est toutefois également possible de définir qu'une valeur doit être remplie à une longueur spécifique.

Malheureusement, l'alignement par défaut diffère entre le formatage ancien et le nouveau style. L'ancien style est par défaut à droite aligné sur le nouveau style qu'il reste. xxx

par argument:

Dans l'exemple précédent, la valeur "10" est codée dans le cadre de la chaîne de format. Cependant, il est possible de fournir également de telles valeurs comme un argument. xxx

Encore une fois, le nouveau formatage de style dépasse l'ancienne variante en offrant plus de contrôle sur la manière dont les valeurs sont rembourrées et alignées. Vous êtes capable de choisir le caractère de rembourrage:

Cette opération n'est pas disponible avec un formatage de style ancien. xxx blockQuote>

et aussi les valeurs d'alignement:

Cette opération n'est pas disponible avec un formatage de style ancien. xxx


2 commentaires

Pour la première partie, l'idée était d'avoir une longueur variable. Formaté imbriquée résolue cela. Merci pour le link pyformat !


Aucun problème, puis nidification du {} fera le travail '{: <{}}'. Format ('##', var) ou '{ : <{var}} '. Format (' ##, var = var ')