2.4.1 Stringhe costanti manifeste

Le stringhe costanti vengono descritte dalle seguenti definizioni lessicali:

stringliteral  ::=  [stringprefix](shortstring | longstring)
stringprefix  ::=  "r" | "u" | "ur" | "R" | "U" | "UR" | "Ur" | "uR"
shortstring  ::=  "'" shortstringitem* "'" | '"' shortstringitem* '"'
longstring  ::=  "'''" longstringitem* "'''"
    | '"""' longstringitem* '"""'
shortstringitem  ::=  shortstringchar | escapeseq
longstringitem  ::=  longstringchar | escapeseq
shortstringchar  ::=  <ogni carattere ASCII con l'eccezione di "\", fine riga o quotatura>
longstringchar  ::=  <ogni carattere ASCII con l'eccezione di "\">
escapeseq  ::=  "\" <ogni carattere ASCII>
Potete scaricare il file originale (in Inglese) come testo.

Una restrizione sintattica non indicata da queste produzioni è che non sono ammesse spaziature tra stringprefix ed il resto della stringa costante.

In Italiano: le stringhe costanti possono essere racchiuse in caratteri di quotatura singola (') o doppia ("). Possono anche essere racchiusi in gruppi di stringhe composte da tuple di tre elementi di quotatura (NdT: queste sono in genere indicate come ``triple-quoted strings''). Il carattere backslash (\) viene utilizzato come carattere di escape, che altrimenti avrebbe un significato speciale, come il fine riga, la stessa backslash o il carattere di quotatura. Le stringhe costanti manifeste possono facoltativamente avere come prefisso le lettere "r" o "R"; queste stringhe sono dette stringhe raw e utilizzano differenti regole per l'interpretazione dei backslash nelle sequenze di escape. Un prefisso "u" o "U" rende la stringa una stringa Unicode. Le stringhe Unicode vengono definite dal consorzio Unicode e ISO 10646. Alcune sequenze di escape aggiuntive, descritte sotto, sono disponibili nelle stringhe Unicode. I due caratteri di prefisso possono essere combinati; in questo caso, "u" può apparire prima di "r".

Nelle stringhe a quotatura tripla, vengono ammessi e mantenuti i fine riga e le quotature singole senza escape, ad eccezione del fatto che tre quotature senza escape in una riga terminano la stringa. (Un carattere di ``quotatura'' è il carattere utilizzato per aprire la stringa, cioè sia ' che ").

A meno che il prefisso "r" o "R" non sia presente, le sequenze di escape in una stringa vengono interpretate in accordo a regole simili a quelle utilizzate nello standard C. Le sequenze di escape riconosciute sono:

Sequenza di escape  Significato  Note 
\newline Ignorato  
\\ Backslash (\)  
\' Carattere di quotatura singola (')  
\" Carattere di quotatura doppia (")  
\a ASCII Bell (BEL)  
\b ASCII Backspace (BS)  
\f ASCII Formfeed (FF)  
\n ASCII Linefeed (LF)  
\N{name} Carattere chiamato name nel database Unicode (solamente in Unicode)  
\r ASCII Carriage Return (CR)  
\t ASCII Tab orizzontale (TAB)  
\uxxxx Carattere con valore esadecimale a 16 bit xxxx (valido solo per Unicode) (1)
\Uxxxxxxxx Carattere con valore esadecimale a 32 bit xxxxxxxx (valido solo per Unicode) (2)
\v ASCII Tab verticale (VT)  
\ooo Carattere ASCII con valore ottale ooo (3)
\xhh Carattere ASCII con valore esadecimale hh (4)

Note:

(1)
Unità di codice individuali che formano parte di un surrogato di una coppia, possono essere codificate utilizzando questa sequenza di escape.
(2)
Ciascun carattere Unicode può essere rappresentato in questo modo, ma i caratteri al di fuori del Basic Multilingual Plane (BMP) verranno codificati per utilizzare il surrogato di una coppia se Python è compilato per utilizzare unità di codice a 16 bit (il valore predefinito). Le unità di codice individuali che formano parti del surrogato di una coppia possono essere codificate utilizzando questa sequenza di escape.
(3)
Come nello Standard C, fino a tre cifre ottali vengono accettate.
(4)
Al contrario dello standard C, vengono accettate almeno 2 cifre esadecimali.

Al contrario dello standard C, tutte le sequenze di escape non riconosciute vengono lasciate nella stringa senza apportare modifiche, cioè il backslash viene lasciato nella stringa. (Questo comportamento è utile in fase di debug: se una sequenza di escape viene digitata male, dall'output risultante si riconosce più facilmente come errata). È anche importante notare che le sequenze di escape segnate come ``(valide solamente per Unicode)'' nella tabella sopra, finiscono nella categoria degli escape non riconosciuti per le stringhe costanti non Unicode.

Quando il prefisso "r" o "R" è presente, un carattere che segue un backslash viene incluso nella stringa senza subire modifiche e tutte i backslash vengono lasciati nella stringa. Per esempio, la stringa costante r"\n" consiste di due caratteri: un backslash e una "n" minuscola. I caratteri di quotature possono essere soggetti ad escape con un backslash, ma il backslash rimane nella stringa; per esempio, r"\"" è una stringa costante valida che consiste di due caratteri: un backslash e un carattere di quotatura doppio; r"\" non è una stringa costante valida (anche una stringa raw non può terminare con un numero dispari di backslash). Specificamente, una stringa raw non può terminare con un singolo backslash (poiché il backslash farebbe l'escape dell'ultimo carattere di quotatura). Notare anche che un singolo backslash seguito da un fine riga viene interpretato come se questi due caratteri facessero parte della stringa, non come una continuazione di riga.

Quando un prefisso "r" o "R" viene usato in congiunzione con un prefisso "u" o "U", la sequenza di escape \uXXXX viene elaborata mentre tutte gli altri backslash vengono lasciati invariati nella stringa. Per esempio, la stringa costante ur"\u0062\n" consiste di tre caratteri Unicode: `LATIN SMALL LETTER B', `REVERSE SOLIDUS' e `LATIN SMALL LETTER N'. Si può effettuare l'escape di un backslash con un'altro backslash; comunque, entrambi rimangono nella stringa. Come risultato, le sequenze di escape \uXXXX vengono solo riconosciute quando c'è un numero dispari di backslash.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.