Python 3 tiene exactamente esa sintaxis, excepto que el operador %
es ahora el método format
. str.format
también se ha agregado a Python 2.6+ para facilitar la transición a Python 3. Consulte format string syntax para obtener más detalles.
>>> '{0} {1} {1}' % ('foo', 'bar')
'foo bar bar'
Sin embargo, no se puede hacer con una tupla en las versiones anteriores de Python. Puede acercarse utilizando las teclas de mapeo entre paréntesis. Con las claves de asignación, los valores de formato se deben pasar como un dict en lugar de una tupla.
>>> '%(0)s %(1)s %(1)s' % {'0': 'foo', '1': 'bar'}
'foo bar bar'
Desde el Python manual:
Cuando el argumento de la derecha es un diccionario (u otro tipo de asignación), entonces los formatos de la cadena deben incluir una asignación de claves parenthesised en ese diccionario insertados inmediatamente después de la '%' personaje. La clave de mapeo selecciona el valor a formatear de la asignación.
Interesante. ¿Por qué funciona con '" str ".format (args)' pero no '" str "% args'? –
@Rosarch: Porque la sintaxis '{n}' solo funciona para 'str.format()', no 'str .__ mod __()'. –
@Rosarch: supongo que has mezclado la nueva forma con la antigua forma de formatear porque a la vieja usanza no usan '{}' como marcadores de posición :), pero usar '.format()' es la nueva forma de las cadenas de formateo eche un vistazo al pep 3101 para más detalles: http://www.python.org/dev/peps/pep-3101/ – mouad