繁体   English   中英

谁能告诉我我在做什么错? ast.literal_eval格式错误的节点或字符串python3

[英]can anyone tell me what i'm doing wrong? ast.literal_eval malformed node or string python3

喜,

我正在尝试使用ast.literal_eval将字典从字符串转换为字典,但是由于某种原因,我遇到了错误。 我真的不知道我在做什么错,有人可以告诉我为什么它行不通吗?

>>> ast.literal_eval("""{
   "jsonrpc": "2.0",
   "id": 1,
   "result": {
      "moreAvailable": false,
      "currentOrders": [
         {
            "sizeCancelled": 0.0,
            "marketId": "1.117685350",
            "priceSize": {
               "price": 1.03,
               "size": 30.0
            },
            "placedDate": "2015-03-11T14:55:51.000Z",
            "sizeLapsed": 0.0,
            "orderType": "LIMIT",
            "averagePriceMatched": 1.03,
            "bspLiability": 0.0,
            "matchedDate": "2015-03-11T14:55:57.000Z",
            "sizeRemaining": 0.0,
            "selectionId": 1485567,
            "side": "BACK",
            "betId": "47371597910",
            "persistenceType": "LAPSE",
            "handicap": 0.0,
            "status": "EXECUTION_COMPLETE",
            "regulatorCode": "DANISH GAMBLING AUTHORITY",
            "sizeVoided": 0.0,
            "sizeMatched": 30.0
         }
      ]
   }
}""")
Traceback (most recent call last):
  File "<pyshell#49>", line 33, in <module>
    }""")
  File "C:\Python34\lib\ast.py", line 84, in literal_eval
    return _convert(node_or_string)
  File "C:\Python34\lib\ast.py", line 62, in _convert
    in zip(node.keys, node.values))
  File "C:\Python34\lib\ast.py", line 61, in <genexpr>
    return dict((_convert(k), _convert(v)) for k, v
  File "C:\Python34\lib\ast.py", line 62, in _convert
    in zip(node.keys, node.values))
  File "C:\Python34\lib\ast.py", line 61, in <genexpr>
    return dict((_convert(k), _convert(v)) for k, v
  File "C:\Python34\lib\ast.py", line 83, in _convert
    raise ValueError('malformed node or string: ' + repr(node))
ValueError: malformed node or string: <_ast.Name object at 0x00000000052FE278>

false在Python中不是有效的文字(它是False 1 )。

看起来您正在尝试解析json.loads在这种情况下json.loads可能正是您要寻找的内容。


1实际上,在python2.x上, False根本不是文字,而是名称ast.dump(ast.parse('False')) )。 ast.literal_eval (以及TrueNone )被特殊情况下评估为适当的值...

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM