2009-12-15 12 views
15

Voglio verificare se la stringa data è singola o doppia. Se è una citazione singola, voglio convertirla in doppia citazione, altrimenti deve essere la stessa doppia citazione.Converti una stringa con quotatura singola in stringa con doppia virgoletta

+3

Non sto tutti convinti sta interpretando la tua domanda come si intendeva. Queste stringhe contengono queste virgolette singole e doppie * come parte del contenuto *? Il modo migliore per spiegare la tua domanda è di includere alcuni esempi di ciò che hai inserito, di come vorresti che l'output appaia, ecc. Se possibile, copia e incolla da una vera sessione della console Python così non ci sarà modo in cui possiamo scambiare ciò che intendi. –

risposta

5

La differenza è solo su input. Loro sono la stessa cosa.

s = "hi" 
t = 'hi' 
s == t 

Vero

Si può anche fare:

"hi" == 'hi' 

Vero

Fornire entrambi i metodi è utile perché si può ad esempio avere la stringa contiene ' o " direttamente senza escape.

+0

Allo stesso modo, non vi è alcuna differenza tra la stringa quotata regolarmente ('" "foo" ') e la stringa con tre virgolette (' "" "" foo "" "'). –

+0

@Brain 'json.dumps ('dog')' ouputs ''" dog "'' al file ma voglio '" dog "'. Come farlo? – chandresh

10

Non vi è alcuna differenza tra le stringhe "quotate singole" e "virgolette" in Python: entrambe vengono analizzate internamente agli oggetti stringa.

voglio dire:

a = "European Swallow" 
b = 'African Swallow' 

sono internamente oggetti stringa.

Tuttavia, è possibile aggiungere una citazione aggiuntiva all'interno di un oggetto stringa, in modo che il contenuto stesso venga visualizzato tra virgolette quando viene stampato/esportato?

c = "'Unladen Swallow'" 

?

Ah - data la clarifciation (pubblicato come commetn da Kumar, muggito):

Se si dispone di un mix di citazioni all'interno di una stringa del tipo:

a = """ Buon "Natale"! Happy 'anno nuovo' """

quindi è possibile utilizzare il 'metodo replace' per convertire poi tutto in un solo tipo:!

a = a.replace('"', "'") 

Se vi capita di avere nidificato stringhe, quindi sostituire abeti t le virgolette esistenti citazioni fuggiti, e più tardi le quotazioni otuer:

a = """This is an example: "containing 'nested' strings" """ 
a = a.replace("'", "\\\'") 
a = a.replace('"', "'") 
+0

Grazie prima In realtà sto ottenendo il la stringa di citazione singole, doppie stringhe tra virgolette in modo dinamico e anche sto usando urljoin (dublequote, singlequote) ecco i problema di fronte l'uscita è una combinazione sia ma ne ho bisogno come singolo – Kumar

+3

Quando si utilizza 'json', fa molta differenza tra una stringa in' '' e '" ".' – chandresh

+1

' json.dumps ('dog') 'ouputs' '"dog"' 'al file ma voglio' "cane" '. Come farlo? – chandresh

2

In Python, non v'è alcuna differenza tra le stringhe che sono singola o doppia citato, quindi non so perché si vuole fare questo . Tuttavia, se in realtà si intendono singoli caratteri di virgoletta all'interno di una stringa, quindi per sostituirli con virgolette doppie, si dovrebbe fare questo: mystring.replace('\'', '"')

+1

Mi piace 'string.replace (" '",'" ') 'leggermente migliore — ha un bel motivo alternato di citazioni in esso :-) –

+0

grazie mille per la prima volta In realtà sto ottenendo la stringa singola virgoletta, le stringhe doppie citate dinamicamente e sto usando anche urljoin (dublequote, singlequote) quindi qui sto affrontando problema l'output è combinazione entrambi. .. Grazie mille – Kumar

+0

Grazie per aver risposto alla domanda invece di entrare nei dettagli su come Python interpreta le citazioni. Avevo un caso d'uso in cui un file richiedeva le sue doppie virgolette posto con virgolette singole in modo che potesse essere passato in un'altra lingua che era sensibile al tipo di preventivo. –

6

Sembra che si stia lavorando con JSON. Vorrei solo assicurarsi che sia sempre un doppio quouted come questo:

doubleQString = "{0}".format('my normal string') 
with open('sampledict.json','w') as f: 
    json.dump(doubleQString ,f) 

Avviso sto usando dump, nondumps.

Sampledict.json sarà simile a questa:

"my normal string" 
Problemi correlati