我正在编辑一个脚本,该脚本向 openstack keystone 进行身份验证以获取 token 。 API 调用有效,但我想使用变量而不是直接值来使其更具可读性和可重用性。但问题是值必须用引号 (") 引起来,我不知道该怎么做。我找到了一些代码示例 [1]、[2] 通常在字符串中使用变量,但是我需要使用某种转义序列将值放在引号中。
目前我的字符串分配看起来像这样:
params = '{"auth":{"passwordCredentials":{"username":"nodermatt", "password":"feelfree"}, "tenantId":"4"}}'
如您所见,用户名、密码和租户 ID 的值在引号中,我希望用变量替换它们:
osuser = "nodermatt"
ospassword = "feelfree"
ostenant = "4"
params = '{"auth":{"passwordCredentials":{"username":osuser, "password":ospassword}, "tenantId":ostenant}}'
如果能解决这个“问题”我会很高兴。
PS:如果我错过了与我的问题相匹配的线程或 google 搜索结果,我将非常感谢链接。
提前致谢! 此致, 尼古拉斯
最佳答案
对于这种特殊情况,最简单的解决方案是先定义一个 Python 字典,然后使用 json.dumps()
将其转换为 JSON:
osuser = "nodermatt"
ospassword = "feelfree"
ostenant = "4"
d = {"auth":
{"passwordCredentials": {"username": osuser, "password": ospassword},
"tenantId": ostenant}}
params = json.dumps(d)
关于引号中的 Python 变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9905241/