Как получить значение без подданных? - PullRequest
1 голос
/ 20 мая 2019

пытается получить эти данные от моего json:

O2FDSFDSN47U-BFSDFSDWO3-TTFSDFS245H
OIBKDFSDFS2B-K6A2FSDFSDO-2GPFSDFSNES
OSZZEE-FDSDQUNAZ-OHDSQDQS2NDS

с использованием print(data['result']['open']): но возвращает все данные после id.

Эти id все еще движутся,Я не могу их угадать.Использование регулярных выражений, кажется, не является хорошей идеей

ничего другого, но при использовании моего анализатора Python я всегда получал субданные.

{
  "error": [],
  "result": {
    "open": {
      "O2FDSFDSN47U-BFSDFSDWO3-TTFSDFS245H": {
        "refid": null,
        "userref": 0,
        "status": "open",
        "starttm": 0,
        "expiretm": 0,
        "descr": {
          "ordertype": "limit",
          "price": "3",
          "price2": "0",
          "leverage": "none",
          "close": ""
        },
        "vol": "1.00000000",
        "vol_exec": "0.00000000",
        "cost": "0.00000",
        "fee": "0.00000",
        "price": "0.00000",
        "stopprice": "0.00000",
        "limitprice": "0.00000",
        "misc": "",
        "oflags": "fcib"
      },
      "OIBKDFSDFS2B-K6A2FSDFSDO-2GPFSDFSNES": {
        "refid": null,
        "userref": 0,
        "status": "open",
        "starttm": 0,
        "expiretm": 0,
        "descr": {
          "ordertype": "limit",
          "price": "1.5",
          "price2": "0",
          "leverage": "none",
          "close": ""
        },
        "vol": "2.00000000",
        "vol_exec": "0.00000000",
        "cost": "0.00000",
        "fee": "0.00000",
        "price": "0.00000",
        "stopprice": "0.00000",
        "limitprice": "0.00000",
        "misc": "",
        "oflags": "fciq"
      },
      "OSZZEE-FDSDQUNAZ-OHDSQDQS2NDS": {
        "refid": null,
        "userref": 0,
        "status": "open",
        "starttm": 0,
        "expiretm": 0,
        "descr": {
          "ordertype": "limit",
          "price": "9",
          "price2": "0",
          "leverage": "none",
          "close": ""
        },
        "vol": "1.00000000",
        "vol_exec": "0.00000000",
        "cost": "0.00000",
        "fee": "0.00000",
        "price": "0.00000",
        "stopprice": "0.00000",
        "limitprice": "0.00000",
        "misc": "",
        "oflags": "fciq"
      }
    }
  }
}

как получить тезисы без чего-либо еще?

Ответы [ 2 ]

2 голосов
/ 20 мая 2019
import json
s = '''{
  "error": [],
  "result": {
    "open": {
      "O2FDSFDSN47U-BFSDFSDWO3-TTFSDFS245H": {
        "refid": null,
        "userref": 0,
        "status": "open",
        "starttm": 0,
        "expiretm": 0,
        "descr": {
          "ordertype": "limit",
          "price": "3",
          "price2": "0",
          "leverage": "none",
          "close": ""
        },
        "vol": "1.00000000",
        "vol_exec": "0.00000000",
        "cost": "0.00000",
        "fee": "0.00000",
        "price": "0.00000",
        "stopprice": "0.00000",
        "limitprice": "0.00000",
        "misc": "",
        "oflags": "fcib"
      },
      "OIBKDFSDFS2B-K6A2FSDFSDO-2GPFSDFSNES": {
        "refid": null,
        "userref": 0,
        "status": "open",
        "starttm": 0,
        "expiretm": 0,
        "descr": {
          "ordertype": "limit",
          "price": "1.5",
          "price2": "0",
          "leverage": "none",
          "close": ""
        },
        "vol": "2.00000000",
        "vol_exec": "0.00000000",
        "cost": "0.00000",
        "fee": "0.00000",
        "price": "0.00000",
        "stopprice": "0.00000",
        "limitprice": "0.00000",
        "misc": "",
        "oflags": "fciq"
      },
      "OSZZEE-FDSDQUNAZ-OHDSQDQS2NDS": {
        "refid": null,
        "userref": 0,
        "status": "open",
        "starttm": 0,
        "expiretm": 0,
        "descr": {
          "ordertype": "limit",
          "price": "9",
          "price2": "0",
          "leverage": "none",
          "close": ""
        },
        "vol": "1.00000000",
        "vol_exec": "0.00000000",
        "cost": "0.00000",
        "fee": "0.00000",
        "price": "0.00000",
        "stopprice": "0.00000",
        "limitprice": "0.00000",
        "misc": "",
        "oflags": "fciq"
      }
    }
  }
}'''

data = json.loads(s)

>>> data['result']['open'].keys()
dict_keys(['O2FDSFDSN47U-BFSDFSDWO3-TTFSDFS245H', 'OIBKDFSDFS2B-K6A2FSDFSDO-2GPFSDFSNES', 'OSZZEE-FDSDQUNAZ-OHDSQDQS2NDS'])
>>>
1 голос
/ 20 мая 2019

Действительно, использование regex для разбора вашего json не очень хороший подход , вам нужно после загрузки json в объект словаря получить доступ ко всем ключам через dict.keys().

import json

inStr = """{
  "error": [],
  "result": {
    "open": {
      "O2FDSFDSN47U-BFSDFSDWO3-TTFSDFS245H": {
        "refid": null,
        "userref": 0,
        "status": "open",
        "starttm": 0,
        "expiretm": 0,
        "descr": {
          "ordertype": "limit",
          "price": "3",
          "price2": "0",
          "leverage": "none",
          "close": ""
        },
        "vol": "1.00000000",
        "vol_exec": "0.00000000",
        "cost": "0.00000",
        "fee": "0.00000",
        "price": "0.00000",
        "stopprice": "0.00000",
        "limitprice": "0.00000",
        "misc": "",
        "oflags": "fcib"
      },
      "OIBKDFSDFS2B-K6A2FSDFSDO-2GPFSDFSNES": {
        "refid": null,
        "userref": 0,
        "status": "open",
        "starttm": 0,
        "expiretm": 0,
        "descr": {
          "ordertype": "limit",
          "price": "1.5",
          "price2": "0",
          "leverage": "none",
          "close": ""
        },
        "vol": "2.00000000",
        "vol_exec": "0.00000000",
        "cost": "0.00000",
        "fee": "0.00000",
        "price": "0.00000",
        "stopprice": "0.00000",
        "limitprice": "0.00000",
        "misc": "",
        "oflags": "fciq"
      },
      "OSZZEE-FDSDQUNAZ-OHDSQDQS2NDS": {
        "refid": null,
        "userref": 0,
        "status": "open",
        "starttm": 0,
        "expiretm": 0,
        "descr": {
          "ordertype": "limit",
          "price": "9",
          "price2": "0",
          "leverage": "none",
          "close": ""
        },
        "vol": "1.00000000",
        "vol_exec": "0.00000000",
        "cost": "0.00000",
        "fee": "0.00000",
        "price": "0.00000",
        "stopprice": "0.00000",
        "limitprice": "0.00000",
        "misc": "",
        "oflags": "fciq"
      }
    }
  }
}"""

data = json.loads(inStr)
print(data['result']['open'].keys())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...