2012-01-29 17 views
41

Bene ... Quando voglio eseguire un comando "stampa" in python e ho bisogno di usare le virgolette, non so come farlo senza chiudere la frase. Per esempio:Python - Utilizzo di virgolette tra virgolette

stampa " 'una parola che ha bisogno di virgolette'"

Ma quando cerco di fare quello che ho fatto in precedenza, io alla fine chiudendo la frase e non riesco a mettere il parola di cui ho bisogno tra virgolette.

Come posso farlo?

risposta

129

Si potrebbe fare questo in uno dei tre modi:

1) usare le virgolette singole e doppie insieme:

>>> print '"A word that needs quotation marks"' 
"A word that needs quotation marks" 

2) Sfuggire i doppi apici all'interno della stringa:

>>> print "\"A word that needs quotation marks\"" 
"A word that needs quotation marks" 

3) Utilizzare stringhe tra virgolette:

>>> print """ "A word that needs quotation marks" """ 
"A word that needs quotation marks" 
+1

La migliore risposta, proprio qui. – Droogans

+4

Escaping the double-quotes funziona, ma gli spazi extra che hai inserito sono ora parte della stringa, facilmente risolti eliminando gli spazi. Allo stesso modo con le stringhe tripla citato - gli spazi in più diventano parte della stringa, e non sono sicuro come risolvere questo problema come mettere l'interno "accanto al triplo" provoca uno SyntaxError –

+0

@JamesPolley Hai ragione su caso n. 3. Ho risolto il caso n. 2. –

3

Python accetta sia "e 'come virgolette, in modo che si possa fare questo come:

>>> print '"A word that needs quotation marks"' 
"A word that needs quotation marks" 

In alternativa, basta sfuggire alla interiore "s

>>> print "\"A word that needs quotation marks\"" 
"A word that needs quotation marks" 
6

È necessario sfuggire:

>>> print "The boy said \"Hello!\" to the girl" 
The boy said "Hello!" to the girl 
>>> print 'Her name\'s Jenny.' 
Her name's Jenny. 

Vedere la pagina python per string literals.

2

Utilizzare il carattere di escape letterale \

print("Here is, \"a quote\"") 

Il carattere fondamentalmente significa ignorare il contesto semantico del mio prossimo charcter, e trattare con esso nel suo senso letterale.

1

in Python 3.2.2 su Windows,

print(""""A word that needs quotation marks" """) 

è ok. Penso che sia il miglioramento dell'interprete Python.

0

Si potrebbe anche provare aggiunta stringa: print " "+'"'+'a word that needs quotation marks'+'"'

1

Un caso che è prevalente nel duplicati è l'obbligo di utilizzare le virgolette per i processi esterni. Una soluzione alternativa è quella di non utilizzare una shell, che rimuove il requisito per un livello di quotatura.

os.system("""awk '/foo/ { print "bar" }' %""" % filename) 

può utilmente essere sostituito con

subprocess.call(['awk', '/foo/ { print "bar" }', filename]) 

(che ne fissa anche il bug che la Shell metacaratteri in filename avrebbe bisogno di essere fuggito dal guscio, che il codice originale non è riuscito a fare, ma senza un shell, non ce n'è bisogno).

Naturalmente, nella stragrande maggioranza dei casi, non è necessario o non è necessario un processo esterno.

with open(filename) as fh: 
    for line in fh: 
     if 'foo' in line: 
      print("bar") 
Problemi correlati