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> |
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:
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.