2011-09-20 14 views
9

Ciao Sto cercando di avere una stringa che contenga sia la citazione singola che la doppia in python - ('"). Il motivo per cui ho bisogno di questa espressione è di usare come input ad un comando batch esterno, tuttavia python lo corregge sempre automaticamente in (\ '"). Mi chiedo se c'è un modo per mettere insieme una doppia citazione e una singola citazione così com'è. Grazie.Avere sia una virgola singola che una doppia in una stringa di python

+0

Intendi dire che il backslash è presente quando lo stampi o solo quando lo guardi nell'interprete? –

+6

"python corregge sempre automaticamente"? Dove? Come? Per favore, stampa l'output in modo che sia ** sicuro ** quello che stai ricevendo. Nota che ciò che vedi da 'repr()' e quello che vedi al prompt di >>> non corrisponde a quello che è ** in realtà ** nella stringa. Le versioni 'repr()' e '>>>' sono codice sorgente Python. Non il valore reale. Per favore ** aggiorna ** la tua domanda con esempi specifici. –

risposta

20

Utilizzare le virgolette.

"""Trip'le qu"oted""" 

o

'''Ag'ain qu"oted''' 

Tenete a mente che solo perché Python repr s una stringa con backslash, non significa in realtà è aggiunto eventuali tagli alla stringa, si può solo apparire caratteri speciali sfuggito.

Utilizzando un esempio dal tutorial Python:

>>> len('"Isn\'t," she said.') 
18 
>>> len('''"Isn't," she said.''') 
18 

Anche se la seconda stringa appare un carattere più breve, perché non dispone di una barra rovesciata in esso, in realtà è la stessa lunghezza - il backslash è solo per sfuggire alla virgoletta singola nella singola stringa quotata.

Un altro esempio:

>>> for c in '''"Isn't," she said.''': 
...  sys.stdout.write(c) 
... 
"Isn't," she said. 
>>> 

Se non si lascia Python formattare la stringa, si può vedere la stringa non è stata modificata, è stato appena Python cercando di visualizzarlo in modo inequivocabile.

Vedere tutorial section on strings.

+0

Grazie per la risposta. Tuttavia, quando ho digitato s = "" "" "" "", e quando controllo il valore di s, visualizza ancora '\' "'. Sto passando questa stringa alla riga di comando, quindi deve essere '' ''. – GHO

+0

@GHO vedere il commento di S.Lott sopra. –

+0

@GHO Penso di averlo spiegato abbastanza bene nella risposta (ho aggiunto un altro esempio) - il '\' non è effettivamente lì (nella stringa), Python lo sta solo usando per mostrare che il '' 'non termina la stringa, al contrario di quelli all'inizio e alla fine. t in realtà cambia la tua stringa, proprio come viene visualizzata – agf

4

Utilizzare stringhe triple-citato:

""" This 'string' contains "both" types of quote """ 
''' So ' does " this ''' 
+0

Grazie per la tua risposta.Tuttavia, ho ancora il problema come ho commentato in precedenza.Btw, sto usando python 2.7 – GHO

+2

@GHO: "hanno ancora il problema". significa (1) postare il codice effettivo nella domanda. (2) postare l'output effettivo da un'effettiva istruzione 'print'. Nella domanda. (3) pubblica l'errore effettivo che stai ricevendo. - purtroppo - non posso indovinare quale codice stai usando. –

0

Anche se la sua più prolisso, un modo alternativo sarebbe quello di effettuare le seguenti operazioni:

str1 = 'la parte che ha una doppia "s" in esso '

str1 = str1 + "la parte che ha singolo 's' in esso"

0

è possibile o (1) racchiudere la stringa tra virgolette doppie e sfuggire alla dou le virgolette con un \ o (2) racchiudono la stringa tra virgolette singole e sfuggono alle virgolette singole con un \. Per esempio:

>>> print('She is 5\' 6" tall.') 
She is 5' 6" tall. 
>>> print("He is 5' 11\" tall.") 
He is 5' 11" tall. 
1

Il problema reale è, l'istruzione print() non stampa l'\, ma quando si fa riferimento al valore della stringa nell'interprete, viene visualizzato un "\" ogni volta che un apostrofo è Usato . Ad esempio, vedere il codice seguente:

>>> s = "She said, \"Give me Susan's hat\"" 
    >>> print(s) 
    She said, "Give me Susan's hat" 
    >>> s 
    'She said, "Give me Susan\'s hat"' 

Questo è indipendentemente dal fatto che si utilizza apici doppi o tripli per racchiudere la stringa.

>>> s = """She said, "Give me Susan's hat" """ 
    >>> s 
    'She said, "Give me Susan\'s hat" ' 

Un altro modo per includere questo:

>>> s = '''She said, "Give me Susan's hat" ''' 
    >>> s 
    'She said, "Give me Susan\'s hat" ' 
    >>> s = '''She said, "Give me Susan\'s hat" ''' 
    >>> s 
    'She said, "Give me Susan\'s hat" ' 

Quindi, fondamentalmente, Python non rimuovere il \ quando si fa riferimento al valore di s, ma lo rimuove quando si tenta di stampare. Nonostante ciò, quando si fa riferimento alla lunghezza di s, non conta la "\". Per per esempio.,

>>> s = '''"''"''' 
    >>> s 
    '"\'\'"' 
    >>> print(s) 
    "''" 
    >>> len(s) 
    4 
0

Per aggiungere sia la citazione singolo e doppio sull'uso pitone schermato (sfuggito) virgolette. Prova questo per esempio:

print(" just display ' and \" ") 

Il \" dice pitone questa non è la fine della stringa tra virgolette.

Problemi correlati