Le stringhe e gli oggetti Unicode hanno un'unica operazione built-in;
l'operatore %
(modulo). Questo è anche conosciuto come
formattatore di stringhe o operatore di interpolazione di
stringhe.
Fornendo dei valori formato % valori
(dove formato
è una stringa o un oggetto Unicode), le specifiche di conversione
%
in formato vengono sostituite con zero o più
elementi di valori. L'effetto è simile a quello di
sprintf() nel linguaggio C. Se formato è un oggetto
Unicode, o se ognuno degli oggetti è stato convertito usando la
conversione %s
degli oggetti Unicode, anche il risultato sarà un
oggetto Unicode.
Se formato richiede un singolo argomento, valori potrebbe essere un singolo oggetto non tupla.2.8 Altrimenti, valori deve essere una tupla con l'esatto numero di elementi specificato dal formato della stringa, o un singolo oggetto mappato (per esempio un dizionario).
Uno specificatore di conversione contiene due o più caratteri ed ha i seguenti componenti, che devono presentarsi in quest'ordine :
(nomeacaso)
).
Quando l'argomento è un dizionario (o un'altro tipo di mappatura), la formattazione nella stringa deve includere, tra parentesi, una chiave del dizionario, inserita immediatamente dopo il carattere "%". La chiave di mappatura seleziona il valore che deve essere formattato dalla mappatura. Per esempio:
>>> print '%(language)s has %(#)03d quote types.' % \ {'language': "Python", "#": 2} Python has 002 quote types.
In questo caso nessuno specificatore *
può essere trovato nella
formattazione (poiché richiede una lista di parametri sequenziali).
Le opzioni di conversione sono:
Opzione | Significato |
---|---|
Il valore di conversione userà l'``alternate form'' (dove definito piu` avanti). | |
La conversione riempirà di zeri, per valori numerici. | |
Il valore convertito viene sistemato a sinistra (sovrascrivendo la conversione "0" se vengono forniti entrambi). | |
(uno spazio) Uno spazio bianco dovrebbe essere lasciato prima di un numero positivo (o una stringa vuota) prodotto da una conversione con segno. | |
Un carattere segno ("+" o "-") precederà la conversione (sovrascrivendo l'opzione "space"). |
Il modificatore di lunghezza può essere h
, l
, e L
può essere presente, ma viene ignorato come non necessario per Python.
I tipi di conversione sono:
Conversione | Significato | Note |
---|---|---|
Numero intero decimale con segno. | ||
Numero intero decimale con segno. | ||
Ottale senza segno. | (1) | |
Decimale senza segno. | ||
Esadecimale senza segno (minuscolo). | (2) | |
Esadecimale senza segno (maiuscolo). | (2) | |
Numero in virgola mobile, in formato esponenziale (minuscolo). | ||
Numero in virgola mobile, in formato esponenziale (maiuscolo). | ||
Decimale in virgola mobile. | ||
Decimale in virgola mobile. | ||
Lo stesso di "e" se l'esponente è più grande di -4 o minore della precisione, "f" altrimenti. | ||
Lo stesso di "E" se l'esponente è più grande di -4 o minore della precisione, "F" altrimenti. | ||
Carattere singolo (accetta interi o stringhe di singoli caratteri). | ||
Stringa (converte ogni oggetto Python usando repr()). | (3) | |
Stringa (converte ogni oggetto Python usando str()). | (4) | |
Nessun argomento viene convertito, riporta un carattere "%" nel risultato. |
Note:
'0x'
o '0X'
(dipendente da quale tra i formati
"x" o "X" sia stato usato) tra la parte sinistra
e la formattazione del numero, se il carattere iniziale del
risultato non è già zero.
%r
venne aggiunta in Python 2.0.
Poiché le stringhe Python hanno una lunghezza esplicita, le
conversioni %s
non assumono che '\0'
sia la fine
della stringa.
Per ragioni di sicurezza, le precisioni in virgola mobile vengono
bloccate a 50; le conversioni %f
per i numeri di valore
assoluto oltre 1e25 vengono sostituite da conversioni %g
.
2.9Tutti gli altri errori sollevano eccezioni.
Operazioni ulteriori sulle stringhe vengono definite nei moduli standard string e re.