Exemple Ruby:
name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."
La concaténation réussie de la chaîne Python est apparemment verbeuse pour moi.
Exemple Ruby:
name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."
La concaténation réussie de la chaîne Python est apparemment verbeuse pour moi.
name
s'agit d'une variable locale située dans la chaîne, et en Python, vous devez passer explicitement le dictionnaire des variables locales au formateur de chaînes si vous voulez qu'il les utilise.Réponses:
Python 3.6 ajoutera une interpolation de chaîne littérale similaire à l'interpolation de chaîne de Ruby. À partir de cette version de Python (dont la sortie est prévue fin 2016), vous pourrez inclure des expressions dans les "f-strings", par exemple
Avant la 3.6, le plus proche de vous est
L'
%
opérateur peut être utilisé pour l' interpolation de chaînes en Python. Le premier opérande est la chaîne à interpoler, le second peut avoir différents types, y compris un "mappage", mappant les noms de champ aux valeurs à interpoler. Ici, j'ai utilisé le dictionnaire des variables localeslocals()
pour mapper le nom du champname
à sa valeur en tant que variable locale.Le même code utilisant la
.format()
méthode des versions récentes de Python ressemblerait à ceci:Il y a aussi la
string.Template
classe:la source
%s
pour une chaîne et%03d
pour un nombre complété à 3 chiffres avec des zéros en tête. Cela pourrait simplement être écritprint "%s has %03d" % ("Python", 2)
. L'exemple utilise ensuite de mettre une clé de mappage entre crochets après le%
qui est un moyen de donner aux espaces réservés des noms significatifs plutôt que de se fier à leur ordre dans la chaîne. Vous passez ensuite un dictionnaire qui mappe les noms de clé à leurs valeurs. C'est pourquoi Sven utilise lalocals()
fonction qui retourne un dict contenant toutes vos variables locales afin qu'il soit mappéname
à la valeur du noms
comme type de conversion - Python peut convertir à peu près n'importe quoi en chaîne. Mais bien sûr, vous perdriez les capacités de formatage spéciales des autres types de conversion.Depuis Python 2.6.X, vous pouvez utiliser:
la source
%
opérateur d'interpolation de chaîne n'est pas obsolète dans Python 3.x. docs.python.org/dev/py3k/whatsnew/… annonce le plan de dépréciation à%
partir de la 3.1, mais cela ne s'est jamais produit.{}
peut être éliminé.J'ai développé le paquet interpy , qui permet l'interpolation de chaînes en Python .
Installez-le via
pip install interpy
. Et puis, ajoutez la ligne# coding: interpy
au début de vos fichiers!Exemple:
la source
L'interpolation de chaînes de Python est similaire à printf () de C
Si tu essayes:
La balise
%s
sera remplacée par laname
variable. Vous devriez jeter un œil aux balises de fonction d'impression: http://docs.python.org/library/functions.htmlla source
print "First is %s, second is %s" % (var1, var2)
.L'interpolation de chaînes va être incluse avec Python 3.6 comme spécifié dans PEP 498 . Vous pourrez le faire:
Notez que je déteste Spongebob, donc écrire cela a été légèrement douloureux. :)
la source
Vous pouvez également avoir ceci
http://docs.python.org/2/library/string.html#formatstrings
la source
#
imprimer. Ils utilisent simplement la syntaxe Ruby.#
personnage serait imprimé.Usage:
PS: les performances peuvent être un problème. Ceci est utile pour les scripts locaux, pas pour les journaux de production.
Dupliqué:
Formatage des chaînes Python:% vs .format
Quel est l'équivalent Python de l'incorporation d'une expression dans une chaîne? (ie. "# {expr}" en Ruby)
Quel est l'équivalent Ruby de `s =" bonjour,% s. Où est% s? " % ("John", "Mary") `
Existe-t-il un Python équivalent à l'interpolation de chaînes de Ruby?
la source
Pour l'ancien Python (testé sur 2.4), la meilleure solution montre le chemin. Tu peux le faire:
Et vous obtenez
la source
Python 3.6 et plus récent ont une interpolation de chaîne littérale utilisant des chaînes f:
la source