2011-01-16 11 views
57

C'è un modo per dichiarare una variabile stringa in python in modo tale che tutto ciò che è all'interno di esso sia automaticamente sfuggito, o abbia il suo valore di carattere letterale?Come scrivere stringhe letterali in python senza doverle sfuggire?

Sono non chiedendo come evitare le virgolette con barre, è ovvio. Quello che sto chiedendo è un modo generale per fare tutto in una stringa letterale in modo che non debba passare manualmente e sfuggire a tutto per stringhe molto grandi. Qualcuno sa di una soluzione? Grazie!

risposta

72

prime stringhe letterali:

>>> r'abc\dev\t' 
'abc\\dev\\t' 
+17

'r'dir \ '' tuttavia è un errore lex –

+0

A cosa serve questo codice? Perdonate la mia ignoranza ... –

48

Se hai a che fare con grandi archi, in particolare stringhe multilinea, essere consapevoli del tripla citazione sintassi:

a = r"""This is a multiline string 
with more than one line 
in the source code.""" 
+0

Questo costrutto introduce caratteri di interruzione di riga? Cioè, la variabile 'a' conterrà una stringa con due caratteri di interruzione di riga? – MadPhysicist

+6

@MadPhysicist: Sì, la stringa risultante conterrà due newline nel caso precedente. –

+0

Capito.E se su questa stringa viene usato un 'split()', sarà diviso per linee di default? – MadPhysicist

2

troverete Documentazione stringa letterale di Python qui:

http://docs.python.org/tutorial/introduction.html#strings

e qui:

http://docs.python.org/reference/lexical_analysis.html#literals

L'esempio più semplice sarebbe utilizzando il prefisso 'r':

ss = r'Hello\nWorld' 
print(ss) 
Hello\nWorld 
+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - [Dalla recensione] (/ recensione/post di bassa qualità/16784654) – stovfl

5

Non esiste una cosa del genere. Sembra che tu voglia qualcosa come "here documents" in Perl e le shell, ma Python non ha questo.

L'utilizzo di stringhe non formattate o stringhe multiple significa solo che ci sono meno cose di cui preoccuparsi. Se utilizzi una stringa non elaborata, devi ancora lavorare su un terminale "\" e con qualsiasi soluzione stringa dovrai preoccuparti della chiusura ",", "" o "" "se è inclusa nei tuoi dati .

Cioè, non c'è modo di avere la stringa

' ''' """ " \ 

correttamente conservato in qualsiasi stringa Python letterale senza fuga interna di qualche tipo.

2

(Dando per scontato che non sono tenuti a inserire la stringa direttamente da codice Python)

per aggirare il problema Andrew Dalke ha sottolineato, è sufficiente digitare la stringa letterale in un file di testo e quindi utilizzare questo;

input_ = '/directory_of_text_file/your_text_file.txt' 
input_open = open(input_,'r+') 
input_string = input_open.read() 

print input_string 

Questo stamperà il testo letterale di ciò che è nel file di testo, anche se si tratta;

' ''' """ “ \ 

Non divertimento o ottimale, ma può essere utile, soprattutto se si dispone di 3 pagine di codice che avrebbe avuto bisogno di carattere fuga.

Problemi correlati