2011-01-30 5 views

Répondre

20
"{name} is a {adjective} {noun} that {verb}".format(**locals()) 
  • locals() donne une référence à l'espace de nommage (comme un dictionnaire).
  • **locals() décompresse ce dictionnaire en arguments de mot-clé (f(**{'a': 0, 'b': 1}) est f(a=0, b=1)).
  • .format() est "the new string formatting", qui peut en faire beaucoup plus (par exemple {0.name} pour l'attribut name du premier argument positionnel).

Sinon, string.template (encore une fois, avec la population locale si vous voulez éviter un {'name': name, ...} dict littéral redondant).

+3

Pour plus de détails et d'options: http://docs.python.org/library/stdtypes.html#string-formatting – Harmen

+0

@Harem: +1 Je cherchais réellement ce lien, mais j'ai trouvé le PEP en premier ... doit être un défaut dans mon algorithme de recherche. – delnan

+1

Passer des locals() à une fonction est généralement une très mauvaise idée. Cela conduit à un fluage des paramètres, où il est impossible de dire quelles variables sont réellement destinées à être transmises et quelles sont réellement les locales. –

4

Pour python 2 faire:

print name,'is a',adjective,noun,'that',verb 

Pour python 3 parens add:

print(name,'is a',adjective,noun,'that',verb) 

Si vous devez l'enregistrer dans une chaîne, vous devrez concaténer avec l'opérateur + et vous devrez insérer des espaces. print insère un espace à tous les , à moins qu'il y ait une virgule de fin à la fin des paramètres, dans ce cas, il renonce à la nouvelle ligne.

Pour enregistrer la chaîne var:

result = name+' is a '+adjective+' '+noun+' that '+verb 
+0

Notez que dans Pyhon 2, cette affiche un tuple au lieu de quelques cordes;) (juste déposer les parens) – delnan

+0

grâce delnan fixes. –

5

utilisation string.Template

>>> from string import Template 
>>> t = Template("$name is a $adjective $noun that $verb") 
>>> t.substitute(name="Lionel", adjective="awesome", noun="dude", verb="snores") 
'Lionel is a awesome dude that snores' 
+0

Génial.Flatterie vous obtient * partout * – Lionel

+0

Quoi qu'il en soit, non? :) – bgporter

Questions connexes