python français - Y a-t-il un Python équivalent à l'interpolation de Ruby?




4 Answers

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 pour la fin de l'année 2016), vous pourrez inclure des expressions dans "f-strings", par exemple

name = "Spongebob Squarepants"
print(f"Who lives in a Pineapple under the sea? {name}.")

Avant 3.6, le plus proche, vous pouvez obtenir à ceci est

name = "Spongebob Squarepants"
print("Who lives in a Pineapple under the sea? %(name)s." % locals())

L'opérateur % peut être utilisé pour l' interpolation de chaîne en Python. Le premier opérande est la chaîne à interpoler, le second peut avoir différents types, y compris un "mapping", mappant les noms de champs aux valeurs à interpoler. Ici, j'ai utilisé le dictionnaire des variables locales locals() pour mapper le nom du name du champ à sa valeur en tant que variable locale.

Le même code utilisant la méthode .format() des versions récentes de Python ressemblerait à ceci:

name = "Spongebob Squarepants"
print("Who lives in a Pineapple under the sea? {name!s}.".format(**locals()))

Il y a aussi la string.Template Classe de string.Template :

tmpl = string.Template("Who lives in a Pineapple under the sea? $name.")
print(tmpl.substitute(name="Spongebob Squarepants"))
opencv documentation

Ruby exemple:

name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."

La concaténation de chaîne Python réussie est apparemment verbeuse pour moi.




J'ai développé le paquet interpy , qui permet l'interpolation de chaîne en Python .

Installez-le simplement via l' pip install interpy . Et puis, ajoutez la ligne # coding: interpy au début de vos fichiers!

Exemple:

#!/usr/bin/env python
# coding: interpy

name = "Spongebob Squarepants"
print "Who lives in a Pineapple under the sea? \n#{name}."



L'interpolation de chaîne de Python est similaire à printf () de C

Si tu essayes:

name = "SpongeBob Squarepants"
print "Who lives in a Pineapple under the sea? %s" % name

L'étiquette %s sera remplacée par la variable name . Vous devriez jeter un oeil aux balises de la fonction d'impression: http://docs.python.org/library/functions.html







Related

python string-interpolation language-comparisons