簡體   English   中英

ast.literal_eval ValueError('格式錯誤的字符串')

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

我有一個格式為{"Top":[{"A":1,"B":721.0,"C":false}]}我想將其轉換為Python集合。

我嘗試像這樣使用ast.literal_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

如何將該字符串轉換為集合?

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

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

但您可能想改用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM