2010-12-11 12 views
14

Ho la stringa U, il suo contenuto è variabile. Mi piacerebbe renderlo una stringa grezza. Come faccio a fare questo?Python Raw Strings

Qualcosa di simile al metodo r ''.

U = str(var) 
+6

Le stringhe non elaborate sono solo una sintassi diversa quando si definisce una costante di stringa. Cosa vuoi in particolare da var che ti faccia pensare all'utilizzo di stringhe non elaborate? –

+1

Stai usando Python 2 o Python 3? Se Python 3, stai forse chiedendo del tipo 'bytes'? –

risposta

17

le stringhe raw si applicano solo ai valori letterali stringa. esistono in modo da poter esprimere più convenientemente le stringhe che verrebbero modificate dall'elaborazione della sequenza di escape. Ciò è particolarmente utile quando si scrivono espressioni regolari o altre forme di codice in stringhe letterali. se si desidera una stringa unicode senza elaborazione di escape, basta prefissarlo con ur, ad esempio ur'somestring'.

+6

Non mi aspetto che @TokenMacGuy lo sappia, ma sono anche utili per definire i percorsi su Windows che utilizza la barra rovesciata come carattere separatore nei percorsi, come 'r'C: \ Python27 \ Tools \ Scripts \ 2to3. py'' – martineau

+8

Ahimè, TokenMacGuy è solo il nome. La mia macchina principale esegue windows. la * vera * ragione per cui non utilizzo le stringhe non elaborate per i percorsi file è perché non ho mai hardcode i nomi dei percorsi. – SingleNegationElimination

35

Le stringhe raw sono non un diverso tipo di stringa. Sono un modo diverso di descrivere una stringa nel codice sorgente. Una volta creata la stringa, è ciò che è.

+6

+1 per l'uso raro e accurato di "è quello che è" – LoveMeSomeCode

+0

questo è in realtà sbagliato. C'è un'altra risposta qui con la risposta corretta: "le stringhe grezze non sfuggono a nulla dentro di loro". – igorsantos07

26

credo che quello che stai cercando sia la funzione str.encode ("string-escape"). Ad esempio, se si dispone di una variabile che si desidera 'stringa raw':

a = '\x89' 
a.encode('unicode_escape') 
'\\x89' 

Nota: utilizzare string-escape per Python 2.xe versioni precedenti

ero alla ricerca di una soluzione simile e ha trovato la soluzione via: casting raw strings python

+0

questa è la soluzione. – erikbwork

+4

Su python 3.5.1: 'LookupError: unknown encoding: string-escape' – nnyby

+0

@nnyby Usa' unicode_escape' invece –