2016-04-21 6 views
-2

In Python habe ich eine unter ZeichenfolgePython Insert Variablen in String

body='{"mode":"sync","message":"43b","messages":[{"node1":44,"node2":45}]}' 

ich die hart codierte Werte 44 und 45 mit Variablen v1 und v2 ersetzen müssen.

I-Format-Option versucht mit, aber schien nicht

+4

Was haben Sie versucht und was nicht funktioniert? – AKS

Antwort

2

Sie Formatierung müssen Zeichenfolge arbeiten:

>>> v1 = 44 
>>> v2 = 45 
>>> body='{"mode":"sync","message":"43b","messages":[{"node1":%s,"node2":%s}]}' % (v1, v2) 
'{"mode":"sync","message":"43b","messages":[{"node1":40,"node2":45}]}' 
+0

Es hat funktioniert. Danke –

+0

Froh, zu helfen. Bitte akzeptieren Sie die Antwort, wenn es für Sie funktioniert hat. – AKS

-2
v1 = 44 
v2 = 45 
body='{"mode":"sync","message":"43b","messages":[{"node1":%s,"node2":%s}]}' % (v1, v2) 

Verwendung %d statt %s, wenn Sie eine Typeerror wollen angehoben werden, wenn v1 und/oder v2 sind keine Ganzzahlen.

+0

danke für die Antwort. –

1

Verwenden Sie das json Modul:

import json 

body = '{"mode":"sync","message":"43b","messages":[{"node1":44,"node2":45}]}' 
j = json.loads(body) 

v1 = "foo" 
v2 = "bar" 

j["messages"][0]["node1"] = v1 
j["messages"][0]["node2"] = v2 

print(json.dumps(j)) 

Ausgang:

{"mode": "sync", "message": "43b", "messages": [{"node2": "bar", "node1": "foo"}]} 
+1

gut zu sehen, dass ich nicht der einzige bin, der denkt, dass json der richtige weg ist :) –

+0

danke für die antwort. –

1

Sie diese Zeichenfolge konvertieren kann dict, und dann können Sie es wie folgt ersetzen:

body='{"mode":"sync","message":"43b","messages":[{"node1":44,"node2":45}]}' 
import json 
body = json.loads(body) 
print body 
v1 = "aaa" 
v2 = "bbb" 
body["messages"][0]["node1"] = v1 
body["messages"][0]["node2"] = v2 
body = json.dumps(body) 
print body 

Ergebnis :

{ "message": "43b", "Nachrichten": [{ "node1": "aaa", "node2": "bbb"}], "Mode": "sync"}

-2

Unten ist eine einfache String-Formatierungsmethode in Python zum Einfügen von Variablen in String

a = "Hallo, mein Name ist {Name}"; b = a.format (Name = 'cooler Geek')