JSON спецификация печати c значение в Python - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь распечатать только имя проекта из данных, которые выглядят так

[{'Project Name': 'ABC'}, {'Customer Name': None}, {'Customer Address': None}, {'Project Description': 'Industries Pvt limited'}]

с моим Python кодом

with open('project.json', 'r') as f:
    data = json.load(f)
    print(data)

for p in data:
    if 'Project Name' in p:
        print(p)
#Here it prints {'Project Name': 'ABC'}
# Print each property of the object
for p in data:
  print(p['Project Name'])

Он выводит имя проекта как AB C, но выдает такую ​​ключевую ошибку

KeyError: 'Project Name'

Ответы [ 4 ]

2 голосов
/ 05 августа 2020

Используйте оператор if, чтобы проверить, есть ли в p Project Name, прежде чем пытаться его распечатать.

1 голос
/ 05 августа 2020

Ваш JSON файл:

[
    {
        "Project Name": "ABC",
        "Customer Name": "None",
        "Customer Address": "None",
        "Project Description": "Industries Pvt limited"
    },
    {
        "Project Name": "QWERTY",
        "Customer Name": "None",
        "Customer Address": "None",
        "Project Description": "Some Text"
    }
]

А вот python файл:

import json

with open('my_json_file.json') as json_file:
    my_json = json.load(json_file)
    for data in my_json:
        print(data["Project Name"])

Результат будет выглядеть так:

ABC
QWERTY
0 голосов
/ 05 августа 2020

Вы не должны использовать for для итерации элементов, потому что ключ «Project Name» не существует в более поздних версиях indies. Или вы должны использовать оператор if, чтобы определить, существует ли имя ключа.

Еще одно предположение состоит в том, что предоставленные вами данные выглядят как список dict, а не общие json. Почему бы не использовать ast? Попробуйте коды ниже:

import ast

txt = "[{'Project Name': 'ABC'}, {'Customer Name': None}, {'Customer Address': None}, {'Project Description': 'Industries Pvt limited'}]"
data = ast.literal_eval(txt)

print(data[0]['Project Name'])
0 голосов
/ 05 августа 2020

Ваш JSON недействителен. Вы можете проверить свой JSON здесь: json lint

Используйте двойные кавычки для JSON, чтобы сделать его действительным.

[
{
    "Project Name": "ABC"
},
{
    "Customer Name": "None"
},
{
    "Customer Address": "None"
},
{
    "Project Description": "Industries Pvt limited"
}

]

Я предлагаю использовать редактор JSON для создания вашего JSON: json редактора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...