2

我有一个字符串输出,它采用 dict ex 的形式。

{'key1':'value1','key2':'value2'} 

如何轻松将其保存为字典而不是字符串?

4

4 回答 4

5

asr 是一个“以字典的形式”的字符串。 ast.literal_eval将其转换为 python dict 对象。

In [110]: import ast

In [111]: astr="{'key1':'value1','key2':'value2'}"

In [113]: ast.literal_eval(astr)
Out[113]: {'key1': 'value1', 'key2': 'value2'}
于 2009-10-18T16:16:10.050 回答
4

如果您使用的是 Python 2.6+,这是最好的,因为它不受 eval 中的安全漏洞的影响。

import ast

s = """{'key1':'value1','key2':'value2'}"""
d = ast.literal_eval(s)
于 2009-10-18T22:57:07.020 回答
1

使用 json.loads - 可能更快

于 2009-10-18T22:27:30.863 回答
1

你从哪里得到这个字符串?是 JSON 格式吗?还是python字典格式?或者只是一些恰好类似于 python 字典的 ad-hoc 格式?

如果它是 JSON,或者它只是一个 dict,并且只包含字符串和/或数字,你可以使用json.loads,它是最安全的选项,因为它根本无法解析 python 代码。

这种方法有一些缺点,例如,如果字符串用单引号'而不是双引号括起来",更不用说它只解析 json 对象/数组,这只是巧合地与 pythons dicts/arrays 共享相似的语法。

尽管我认为您得到的字符串很可能是 JSON 格式。我做出这个假设是因为它是数据交换的常用格式。

于 2009-10-19T01:38:44.833 回答