2016-04-21 85 views
-2

在Python中我有以下字符串字符串Python中插入變量

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

我需要的變量v1v2更換爲硬編碼值4445

我嘗試使用格式選項,但沒有似乎工作

+4

那你試試,什麼也沒有工作? – AKS

回答

2

您需要的字符串格式化:

>>> 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

它的工作。謝謝 –

+0

很高興幫助。如果它適合你,請接受答案。 – AKS

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

使用%d代替%s如果你想要一個TypeError到,如果V1提高和/或v2不是整數。

+0

感謝您的回覆。 –

1

使用json模塊:

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)) 

輸出:

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

很高興看到我不是唯一一個,誰認爲JSON是正確的方式:) –

+0

感謝您的答覆。 –

1

你可以轉換這個字符串快譯通,然後你就可以取代它是這樣的:

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 

結果:

{ 「消息」: 「43B」, 「消息」:[{ 「節點1」: 「AAA」, 「節點2」: 「BBB」}], 「模式」: 「同步」}

-2

下面是一個簡單的字符串格式化方法在python中插入字符串變量

a =「嗨,我的名字是{name}」; B = a.format(NAME = '酷怪胎')