双引号内时调用变量

时间:2020-02-13 15:25:26

标签: python python-3.x

CRED_DATA = 'randomcred'
payload = "{\n  \"password\": \"CRED_DATA\" ,\n  \"username\": \"dom\\\\user\"\n}"
print(payload)

输出:

{
  "password": "CRED_DATA" ,
  "username": "dom\\user"
}

我尝试了双引号,单引号,{[等无法弄清楚。在双引号中的dict中有没有一种方法来调用变量?

4 个答案:

答案 0 :(得分:3)

使用dictjson.dump正确生成JSON。

CRED_DATA = 'randomcred'
payload = {'password': CRED_DATA, 'username': r'dom\user'}
print(json.dumps(payload))

如果您从其他地方获取JSON值,请先对其进行解码,更新结果dict,然后再次转储。

payload = json.loads(payload)
payload['password'] = CRED_DATA
payload = json.dumps(payload)

答案 1 :(得分:1)

您可以在Python中尝试F-Strings

CRED_DATA = 'randomcred'
payload = F"{{\n  \"password\": \"{CRED_DATA}\" ,\n  \"username\": \"dom\\\\user\"\n}}"
print(payload)

输出:

{
  "password": "randomcred" ,
  "username": "dom\\user"
}

但是,根据CRED_DATA的值,不能保证产生有效的JSON(感谢@chepner)。您还可以在Python中使用dictjson.dumps(),就像其他answer中已经提到的那样。

答案 2 :(得分:0)

你是这个意思吗?

CRED_DATA = 'randomcred' payload = "password:",CRED_DATA payload2 = ("\n \"username\": \"dom\\\\user\"\n}") print(payload) print(payload2)

答案 3 :(得分:0)

您的有效负载变量不是字典,而是字符串。我想您想对序列化的物联网进行某种形式的排序,以便通过网络或其他方式进行发送-如果您详细说明了意图,将会很有帮助。

无论如何: 如果要python解析字符串中的变量,请尝试以下操作:

payload = "{\n  \"password\": \"" + CRED_DATA + "\" ,\n  \"username\": \"dom\\\\user\"\n}"

...但是我个人认为使用字典和json.dumps会更好:

import json

CRED_DATA = 'randomcred'

payload = {
    "password": CRED_DATA,
    "username": "dom user"
}

print(json.dumps(payload, indent=4, sort_keys=True))

再次。根据您的用例,这个问题尚不清楚。