2016-07-23 12 views
-2

Hier ist, was ich suche:ersetzen Einzel mit doppelten Anführungszeichen innerhalb Paar Apostrophe

curl -X POST -H "Content-type: application/json" -d '{"group":"stash-adt_ooms-dev","users":['stack', 'overflow']}' "url" 

Ergebnis:

curl -X POST -H "Content-type: application/json" -d '{"group":"admin","users":["stack", "overflow"]}' 

Regex benötigen also zwischen [] von Apostroph zu doppelten Anführungszeichen ersetzen .

+1

In der Ausgabe nicht nur die ' '' s ersetzt durch '" ', die Werte chaged auch Haben Sie dies wollen –

+0

Nr.? ... ich brauche genau wie im Ergebnis erwähnt – Springhills

+0

Kannst du bitte helfen, es als Ergebnis – Springhills

Antwort

0

Sie müssen die Position der offenen Klammer und schließen Klammern und dann ersetzen Sie die ' durch ". Sie können etwas tun wie folgt:

_str = """curl -X POST -H "Content-type: application/json" -d '{"group":"stash-adt_ooms-dev","users":['stack', 'overflow']}' "url" """ 

start = _str.find ("[") 
end = _str.find ("]") 
buff = _str[start:end].replace ("'", "\"") 
_str = _str[:start] + buff + _str[end:] 

Hoffe, das hilft!

+0

zu erhalten Vielen Dank .. Das hat funktioniert – Springhills

0

Ein regex Ansatz einer Lambda innerhalb re.sub anstelle eines Ersatz Bespannbild mit:

import re 
s = """curl -X POST -H "Content-type: application/json" -d '{"group":"stash-adt_ooms-dev","users":['stack', 'overflow']}' "url" """ 
res = re.sub(r"\[.*?]", lambda x: x.group().replace("'", '"'), s) 
print(res) 
# => curl -X POST -H "Content-type: application/json" -d '{"group":"stash-adt_ooms-dev","users":["stack", "overflow"]}' "url" 

Siehe Python demo

Die \[.*?] regex entspricht einem wörtlichen [, dann entspricht null oder mehr Zeichen außer einem Zeilenumbruch (Fügen Sie flags=re.DOTALL zum re.sub hinzu, wenn Sie den Teilstring über mehrere Zeilen hinweg anpassen möchten), so wenig wie möglich bis zum ersten ], der ebenfalls verbraucht wird.

Das Lambda nimmt die Spieldaten x Objekt und ersetzt die '" mit nur innerhalb des Übereinstimmungswertes .group(), das heißt innerhalb all [...] Strings in der Eingabezeichenfolge.

0
a = "curl -X POST -H \"Content-type: application/json\" -d '{\"group\":\"stash-adt_ooms-dev\",\"users\":['stack', 'overflow']}' \"url\"" 

b = re.sub(r'\[\'(\w+)\', \'(\w+)\'\]',r'["\1", "\2"]' , a) 

Druck b wird unten zur Folge haben:

'curl -X POST -H "Content-type: application/json" -d \'{"group":"stash-adt_ooms-dev","users":["stack", "overflow"]}\' "url"' 
Verwandte Themen