简体   繁体   English

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

[英]ast.literal_eval ValueError('malformed string')

I have a string of the form {"Top":[{"A":1,"B":721.0,"C":false}]} which I would like to convert into a Python collection. 我有一个格式为{"Top":[{"A":1,"B":721.0,"C":false}]}我想将其转换为Python集合。

I tried using ast.literal_eval like this: 我尝试像这样使用ast.literal_eval

x = '{"Top":[{"A":1,"B":721.0,"C":false}]}'
print ast.literal_eval(x)

However, I am getting this error: 但是,我收到此错误:

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

How can I convert that string into a collection? 如何将该字符串转换为集合?

false is not accepted by ast.literal_eval . false不被接受ast.literal_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

False is False

>>> ast.literal_eval('False')
False

but you probably want to use json.loads instead since your string looks like valid json (and json.loads is faster than ast.literal_eval for evaluating json strings)... 但您可能想改用json.loads因为您的字符串看起来像是有效的json(并且json.loadsast.literal_eval评估json字符串的速度更快)...

>>> 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}]}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 带有元组字符串表示的格式错误的字符串 ValueError ast.literal_eval() - Malformed String ValueError ast.literal_eval() with String representation of Tuple python:ast.literal_eval()提供ValueError:格式错误的字符串 - python: ast.literal_eval() gives ValueError: malformed string ValueError:使用ast.literal_eval时格式错误的字符串 - ValueError: malformed string when using ast.literal_eval ValueError: 格式错误的节点或字符串 ast.literal_eval() - ValueError: malformed node or string with ast.literal_eval() ValueError:使用ast.literal_eval的格式错误的字符串 - ValueError: malformed string using ast.literal_eval ValueError:添加Keras层时格式错误的节点或带有ast.literal_eval()的字符串 - ValueError: malformed node or string with ast.literal_eval() when adding a Keras layer 使用ast.literal_eval时格式错误的字符串 - Malformed string while using ast.literal_eval ast.literal_eval引发ValueError - ast.literal_eval throwing ValueError ast.literal_eval() 格式错误的节点或字符串,同时转换带有 array() 列表的字符串 - ast.literal_eval() malformed node or string while converting a string with list of array()s python ast.literal_eval在给定“ datetime.datetime.now()”的情况下抛出格式错误的字符串错误 - python ast.literal_eval throwing malformed string error given “datetime.datetime.now()”
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM