【发布时间】:2018-11-22 01:38:32
【问题描述】:
我有一串字典如下:
CREDENTIALS = "{\"aaaUser\": {\"attributes\": {\"pwd\": \"cisco123\", \"name\": \"admin\"}}}"
现在我想用format 这个字符串来动态替换pwd 和name。我试过的是:
CREDENTIALS = "{\"aaaUser\": {\"attributes\": {\"pwd\": \"{0}\", \"name\": \"{1}\"}}}".format('password', 'username')
但这会产生以下错误:
traceback (most recent call last):
File ".\ll.py", line 4, in <module>
CREDENTIALS = "{\"aaaUser\": {\"attributes\": {\"pwd\": \"{0}\", \"name\": \"{1}\"}}}".format('password', 'username')
KeyError: '"aaaUser"
可以通过使用json.loads()将字符串加载为dict,然后根据需要设置属性,但这不是我想要的。我想格式化字符串,以便我可以在其他文件/模块中使用这个字符串。
'
我在这里缺少什么?任何帮助,将不胜感激。
【问题讨论】:
-
为什么不使用
json.loads,更新生成的dict,然后使用json.dumps获取更新后的字符串?这比转义字符串中的所有大括号以使其与format兼容要简单得多。 -
为什么不使用 regex.replace?
-
如果你要使用你的字符串和
format,你必须把所有其他的花括号加倍。实在不方便。我链接的骗子有完全相同的问题) -
这里发生的事情是
"{\"aaaUser\"混淆了str.format,后者将其视为{aaaUser},并期望在其参数中调用aaaUser的某个参数... -
严格来说,重复适用,但在这里做的事情并不正确。
标签: python string python-2.7 dictionary