Je fais cela en Python 2:
"(%d goals, $%d)" % (self.goals, self.penalties)
Quelle est la version Python 3 de ceci?
J'ai essayé de rechercher des exemples en ligne mais j'ai continué à obtenir des versions de Python 2.
python
python-3.x
string
JoseBazBaz
la source
la source
Réponses:
Voici la documentation sur la «nouvelle» syntaxe de format. Un exemple serait:
Si les deux
goals
etpenalties
sont des entiers (c'est-à-dire que leur format par défaut est correct), il peut être raccourci à:Et comme les paramètres sont des champs de
self
, il existe également un moyen de le faire en utilisant un seul argument deux fois (comme @Burhan Khalid l'a noté dans les commentaires):Expliquer:
{}
signifie juste le prochain argument de position, avec le format par défaut;{0}
signifie l'argument avec index0
, avec le format par défaut;{:d}
est le prochain argument de position, au format entier décimal;{0:d}
est l'argument avec index0
, au format entier décimal.Il y a beaucoup d'autres choses que vous pouvez faire lors de la sélection d'un argument (en utilisant des arguments nommés au lieu d'arguments positionnels, en accédant aux champs, etc.) et de nombreuses options de format également (remplir le nombre, utiliser des séparateurs de milliers, afficher le signe ou non, etc.). Quelques autres exemples:
Remarque: comme d'autres l'ont souligné, le nouveau format ne remplace pas l'ancien, les deux sont également disponibles à la fois dans Python 3 et dans les versions plus récentes de Python 2. Certains peuvent dire que c'est une question de préférence, mais à mon humble avis, le plus récent est beaucoup plus expressif que l'ancien et devrait être utilisé chaque fois que vous écrivez un nouveau code (à moins qu'il ne cible des environnements plus anciens, bien sûr).
la source
"({0.goals} goals, ${0.penalties})".format(self)
"conversion rate: {:.2%}".format(self.goals / self.shots)
? Fonctionne bien pour moi tel quel ... (Python 3.4) Notez qu'il n'y a pasf
dedans, je demande de formater en pourcentage, pas en nombre à virgule flottante."{:.2f}%".format(float_num)
fonctionne bien pour les deux.$
n'a pas de signification particulière ici, ni dans l'ancienne syntaxe de format ni dans le nouveau, donc devrait être présent dans la chaîne générée, inchangé.Python 3.6 prend désormais en charge l'interpolation de chaîne littérale abrégée avec PEP 498 . Pour votre cas d'utilisation, la nouvelle syntaxe est simplement:
Ceci est similaire à la
.format
norme précédente , mais permet de faire facilement des choses comme :la source
Cette ligne fonctionne telle quelle dans Python 3.
la source
J'aime cette approche
Notez le d et le s annexés aux crochets respectivement.
la sortie sera:
la source