繁体   English   中英

JSON 打印 Python 中的特定值

[英]JSON print specific value in Python

我正在尝试从看起来像这样的数据中仅打印项目名称

[{'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'])

它将项目名称打印为 ABC,但给出了这样的关键错误

KeyError: 'Project Name'

在尝试打印之前,使用if语句查看p是否有Project Name

您的 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"])

Output 看起来像这样:

ABC
QWERTY

您的 JSON 无效。 您可以在此处查看您的 JSON: json lint

为您的 JSON 使用双引号以使其有效。

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

]

我建议使用 JSON 编辑器来编写您的 JSON: json 编辑器

您不应该使用for来迭代这些项目,因为在后来的印度不存在关键的“项目名称”。 或者你必须使用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'])

暂无
暂无

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

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