如何将格式错误的字符串转换为字典?

我有一个字符串s(注意a和b没有用引号括起来,所以它不能直接被评估为dict):

s = '{a:1,b:2}'

我想将此变量转换为这样的dict:

{'a':1,'b':2}

我怎样才能做到这一点?

最佳答案 因为你的字符串格式错误,因为json和Python都是dict所以你们都不能使用json.loads而不是ast.literal_eval来直接转换数据.

在这种特殊情况下,您必须通过了解输入数据手动将其转换为Python字典

>>> foo = '{a:1,b:2}'
>>> dict(e.split(":") for e in foo.translate(None,"{}").split(","))
{'a': '1', 'b': '2'}

由Tim更新,我的短视我错过了值应该是整数的事实,这是一个替代实现

>>> {k: int(v) for e in foo.translate(None,"{}").split(",") 
     for k, v in [e.split(":")]}
{'a': 1, 'b': 2}
点赞