2011-01-30 6 views

Respuesta

20
"{name} is a {adjective} {noun} that {verb}".format(**locals()) 
  • locals() da una referencia al espacio de nombres actual (como un diccionario).
  • **locals() desempaqueta ese diccionario en argumentos de palabra clave (f(**{'a': 0, 'b': 1}) es f(a=0, b=1)).
  • .format() es "the new string formatting", que por cierto puede hacer mucho más (por ejemplo, {0.name} para el atributo de nombre del primer argumento posicional).

Alternativamente, string.template (de nuevo, con los locales si desea evitar un dict literal {'name': name, ...} redundante).

+3

Para obtener más detalles y opciones: http://docs.python.org/library/stdtypes.html#string-formatting – Harmen

+0

@Harem: +1 En realidad estaba buscando ese enlace, pero encontré que el PEP primero ... debe estar algún defecto en mi algoritmo de búsqueda. – delnan

+1

Pasar locals() a una función suele ser una muy mala idea. Conduce a la fluencia de los parámetros, donde es imposible decir qué variables están realmente destinadas a pasar y cuáles son realmente locales. –

4

para Python 2 do:

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

Para python 3 agregar parens:

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

Si necesita guardarlo en una cadena, deberá concatenar con el operador + y deberá insertar espacios. print inserta un espacio en todo el , a menos que haya una coma al final de los parámetros, en cuyo caso renuncia a la nueva línea.

Para guardar a cadena var:

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

Nótese que en Phyton 2, esta opción se imprime una tupla en lugar de algunas cadenas;) (simplemente dejar los parens) – delnan

+0

gracias fijos delnan. –

5

uso 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

Impresionante.Flattery te consigue * en todas partes * – Lionel

+0

Lo que sea necesario, ¿verdad? :) – bgporter

Cuestiones relacionadas