Introduzione
Puoi creare una stringa grezza in Python prefissando una stringa letterale con r
o R
. La stringa grezza di Python tratta il carattere backslash (\) come un carattere letterale. La stringa grezza è utile quando una stringa deve contenere un backslash, ad esempio per un’espressione regolare o un percorso di directory di Windows, e non vuoi che sia trattato come un carattere di escape. Questo articolo copre i fondamenti di come funzionano le stringhe grezze di Python e fornisce alcuni esempi comuni su come utilizzare le stringhe grezze per includere caratteri speciali nelle stringhe.
Gli esempi in questo articolo utilizzano la console interattiva di Python nella riga di comando per dimostrare diverse situazioni di stringhe grezze.
Includere un carattere di nuova riga in una stringa usando una stringa grezza
Questo esempio utilizza una stringa con un valore: Hi\nHello
. Se provi ad assegnare questo valore a una stringa normale, il carattere di nuova riga (\n
) crea una nuova riga:
- s = 'Hi\nHello'
Stampa la stringa:
- print(s)
L’output è:
Hi
Hello
L’output mostra che il carattere di nuova riga produce una nuova riga.
Per includere il carattere di nuova riga nella stringa, prefissa la variabile stringa con r
o R
per creare una stringa grezza:
- raw_s = r'Hi\nHello'
Stampa la stringa:
- print(raw_s)
L’output è:
Hi\nHello
L’output include il carattere di nuova riga.
Includere Caratteri di Doppia Barra Invertita in una Stringa Utilizzando una Stringa Grezza
Se provi a includere caratteri di doppia barra invertita, come per un percorso del nome host, in una stringa normale, allora il primo carattere di barra invertita non verrà stampato perché il compilatore considera la barra invertita come un indicatore di escape.
Per esempio, crea una stringa che contiene un percorso:
- s = '\\examplehost\digitalocean\content\'
Stampa la stringa:
- print(s)
L’output è:
\examplehost\digitalocean\content\
L’output mostra che il primo carattere di barra invertita non è incluso nella stringa.
Per includere entrambi i caratteri di barra invertita nella stringa, prefissa la variabile stringa con r
o R
per creare una stringa grezza:
- s = r'\\examplehost\digitalocean\content\'
Stampa la stringa:
- print(s)
L’output è:
\\examplehost\digitalocean\content\
L’output include entrambi i caratteri di barra invertita.
Risoluzione dei problemi con le virgolette e i caratteri backslash nelle stringhe grezze
In una stringa grezza, le virgolette possono comunque essere scappate con un singolo carattere backslash, tuttavia il carattere backslash rimane nella stringa grezza risultante.
Inoltre, una stringa grezza non può terminare con un numero dispari di caratteri backslash. A causa di questa caratteristica, non è possibile creare una stringa grezza che contenga un singolo carattere backslash, quindi r"/"
è una stringa non valida.
Esempi di stringhe grezze non valide
In questo esempio, la virgoletta finale manca nell’output poiché è stata scappata dal carattere backslash, risultando in un errore letterale di stringa non terminato
:
r'\'
In questo esempio, i primi due backslash si scapperanno l’un l’altro, e il terzo cercherà di scappare la virgoletta finale, risultando in un errore letterale di stringa non terminato
:
r'ab\\\'
Esempi di stringhe grezze valide
Ecco alcuni esempi di stringhe valide che includono virgolette e caratteri di escape.
Crea una stringa di tipo “raw” che fa l’escape delle virgolette:
- s = r"\"\""
Stampa la stringa:
- print(s)
L’output è:
\"\"
L’output mostra che i caratteri di escape fanno sì che la stringa non termini, ma i caratteri di escape rimangono nella stringa di risultato.
Crea una stringa di tipo “raw” con un numero pari di caratteri di escape:
- s = R'ab\\'
Stampa la stringa:
- print(s)
L’output è:
ab\\
L’output mostra che il numero pari di caratteri di escape è incluso nella stringa di risultato.
Conclusioni
In questo articolo hai appreso le basi delle stringhe di tipo “raw” in Python. Continua il tuo apprendimento sulle stringhe in Python.
Source:
https://www.digitalocean.com/community/tutorials/python-raw-string