Python ast.literal_eval ValueError(';格式错误的字符串';)

Python ast.literal_eval ValueError(';格式错误的字符串';),python,Python,我有一个格式为{“Top”:[{“a”:1,“B”:721.0,“C”:false}]}的字符串,我想将其转换为Python集合 我试着像这样使用ast.literal\u eval: x = '{"Top":[{"A":1,"B":721.0,"C":false}]}' print ast.literal_eval(x) 但是,我遇到了以下错误: File "queryFlights.py", line 19, in <module> print ast.literal_

我有一个格式为
{“Top”:[{“a”:1,“B”:721.0,“C”:false}]}
的字符串,我想将其转换为Python集合

我试着像这样使用
ast.literal\u eval

x = '{"Top":[{"A":1,"B":721.0,"C":false}]}'
print ast.literal_eval(x)
但是,我遇到了以下错误:

File "queryFlights.py", line 19, in <module>
    print ast.literal_eval(x)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 80, in literal_eval
    return _convert(node_or_string)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 63, in _convert
    in zip(node.keys, node.values))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 62, in <genexpr>
    return dict((_convert(k), _convert(v)) for k, v
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 60, in _convert

    return list(map(_convert, node.elts))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 63, in _convert
    in zip(node.keys, node.values))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 62, in <genexpr>
    return dict((_convert(k), _convert(v)) for k, v
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 79, in _convert

    raise ValueError('malformed string')
ValueError: malformed string
文件“queryflight.py”,第19行,在
打印ast.literal\u eval(x)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py”,第80行,文本值
返回\u转换(节点\u或字符串)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py”,第63行,在
在zip中(node.keys、node.values))
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py”,第62行,在
返回k,v的dict((_convert(k),_convert(v))
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py”,第60行,在
返回列表(映射(_convert,node.elts))
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py”,第63行,在
在zip中(node.keys、node.values))
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py”,第62行,在
返回k,v的dict((_convert(k),_convert(v))
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py”,第79行,在
raise VALUERROR('格式错误的字符串')
ValueError:格式不正确的字符串

如何将该字符串转换为集合?

false
不被
ast.literal\u eval
接受

>>> ast.literal_eval('false')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 80, in literal_eval
    return _convert(node_or_string)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 79, in _convert
    raise ValueError('malformed string')
ValueError: malformed string
但是您可能希望使用
json.loads
,因为您的字符串看起来像是有效的json(并且
json.loads
ast.literal\u eval
计算json字符串的速度更快)


ast.literal\u eval
不接受
false

>>> ast.literal_eval('false')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 80, in literal_eval
    return _convert(node_or_string)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 79, in _convert
    raise ValueError('malformed string')
ValueError: malformed string
但是您可能希望使用
json.loads
,因为您的字符串看起来像是有效的json(并且
json.loads
ast.literal\u eval
计算json字符串的速度更快)


你从哪里得到字符串?它最初是JSON格式的吗?Python有
False
,而不是
False
JSON.loads({“Top”:[{“A”:1,“B”:721.0,“C”:False}})
你从哪里得到字符串?它最初是JSON格式的吗?Python有
False
,而不是
False
JSON.loads({“Top”:[{“A”:1,“B”:721.0,“C”:False})
>>> import json
>>> x = '{"Top":[{"A":1,"B":721.0,"C":false}]}'
>>> json.loads(x)
{u'Top': [{u'A': 1, u'C': False, u'B': 721.0}]}