【发布时间】:2018-08-06 11:43:54
【问题描述】:
大家好,如果标题措辞不当,请见谅。我在思考如何解决我遇到的这个问题时遇到了一些麻烦。我本来想简单地传递一个 dict 作为我的 json obj 中这个键的值,但遗憾的是我必须将它作为一个字符串传递。所以,我有一个 json dict 对象,看起来像这样
data = {"test": "Fuzz", "options": "'{'size':'Regular','connection':'unconnected'}'"}。显然,我希望第二个 dict 值不是字典的字符串表示,而是字典。最好的方法是去掉 data[options] 的倒数第二个和倒数第二个单引号,还是有更好的选择?
如有任何混淆,我们深表歉意。这就是我执行后 json 对象的样子
json.dump(data, <filename>)
options 的值可以看作是另一个变量,比如 x,它等价于 '{'size':'Regular','connection':'unconnected'}'
我可以做 x[1:-1] 但我不确定这是否是这里最 Pythonic 的方式。
【问题讨论】:
-
你能否展示一些关于你如何获取数据的代码
-
您可以尝试使用ast.literal_eval。
-
只有 os.getenv('options')。我有一个与我显示为 x 的环境变量相同的环境变量。字典的字符串表示形式。
-
@VasilisG。我不相信这会起作用,因为我使用的是所有单引号。我得到一个无效的语法错误
-
试试
data["options"] = ast.literal_eval(data["options"][1:-1])。在这一点上,我没有看到任何其他方式。
标签: python json dictionary