Python 3 ha esattamente questa sintassi, tranne che l'operatore %
è ora il metodo format
. str.format
è stato inoltre aggiunto a Python 2.6+ per facilitare la transizione a Python 3. Vedere format string syntax per ulteriori dettagli.
Tuttavia, non è possibile eseguire con una tupla nelle versioni precedenti di Python. È possibile avvicinarsi utilizzando le chiavi di mappatura racchiuse tra parentesi. Con le chiavi di mappatura i valori di formato devono essere passati come dict invece di una tupla.
>>> '%(0)s %(1)s %(1)s' % {'0': 'foo', '1': 'bar'}
'foo bar bar'
Dal Python manual:
Quando l'argomento di destra è un dizionario (o un altro tipo di mappatura), quindi i formati nella stringa deve includere una chiave, tra parentesi, dizionario, inserita immediatamente dopo il '%' carattere. La chiave di mappatura seleziona il valore da formattare dalla mappatura.
fonte
2011-01-17 01:39:58
Interessante. Perché funziona con '" str ".format (args)' ma non '" str "% args'? –
@Rosarch: Poiché la sintassi '{n}' funziona solo per 'str.format()', non 'str .__ mod __()'. –
@Rosarch: penso che tu abbia mescolato il nuovo modo con il vecchio modo di formattare perché il vecchio modo non usa '{}' come segnaposto :), ma usare '.format()' è il nuovo modo di formare stringhe dare un'occhiata al pep 3101 per maggiori dettagli: http://www.python.org/dev/peps/pep-3101/ – mouad