Как я могу получить и распечатать конкретные данные из запроса json? - PullRequest
0 голосов
/ 05 февраля 2019

Итак, я хочу иметь возможность извлекать данные, основанные на определенном условии, из этих данных я затем хочу иметь возможность печатать несколько элементов из этого запроса ... вот что я сделал до сих пор:

def rec():
    qe = JsonQ(r"C:\ShopFloor\data.json")
    res = qe.at('data').where('Status', '=', 1).get()
    for Process, Shortnum in res:
        print(Process['Process'] + " " + Shortnum['Shortnum'])

rec()

это из следующего файла json:

{
    "data": [
        {
            "Shortnum": "34567",
            "Process": "SPA",
            "Status": 1,
            "Start_Time": "2016-12-14 15:54:35",
            "Finish_Time": "2016-12-14 15:56:02"
        },
        {
            "Shortnum": "34567",
            "Process": "Figure",
            "Status": 0,
            "Start_Time": "2016-12-08 15:34:05",
            "Finish_Time": "2016-12-08 15:34:09"
        },

Как мне заставить это работать должным образом?В идеале я ищу такой ответ от печати:

SPA 34567

не может получить текущий вывод, я получаю эту ошибку ... я понимаю, что передаю слишком много аргументов, однако я не мог придуматьправильный способ сделать это ...

Exception has occurred: ValueError
too many values to unpack (expected 2)
  File "C:\ShopFloor\main.py", line 101, in rec
    for Process, Shortnum in res:
  File "C:\ShopFloor\main.py", line 106, in <module>
    rec()

1 Ответ

0 голосов
/ 05 февраля 2019

Типичный подход к работе с JSON в Python заключается в загрузке объекта JSON как Python dict:

import json
with open('C:/ShopFloor/data.json', 'r') as f:
    qe = json.load(f)
for item in qe['data']:
    if item['Status'] == 1:
        print(f'{item["Process"]} {item["Shortnum"]}')

Обратите внимание, что здесь используются f-строки Python 3 (beОбязательно чередуйте одинарные и двойные кавычки при доступе к значениям словаря в f-строке).В Python 2 замените последнюю строку на:

        print('{} {}'.format(item['Process'], item['Shortnum']))
...