【问题标题】:JSON print specific value in PythonJSON在Python中打印特定值
【发布时间】:2020-11-25 18:16:44
【问题描述】:

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

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

【问题讨论】:

    标签: python json


    【解决方案1】:

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

    【讨论】:

    • 这就是您发布的 JSON 中的内容;你期待什么?
    • Scott 我原以为输出是 ABC,但在 'with' 循环外插入 'for' 是错误的。不过感谢您的帮助。欣赏它:)
    • print(p['Project Name'])显示{'Project Name': 'ABC'}
    【解决方案2】:

    您的 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
    

    【讨论】:

    • 谢谢!效果很好
    • 这不是问题中发布的 JSON。
    【解决方案3】:

    您不应该使用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'])
    

    【讨论】:

      【解决方案4】:

      您的 JSON 无效。你可以在这里查看你的 JSON:json lint

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        • 2021-01-05
        • 2019-04-10
        • 2018-04-13
        • 2017-03-13
        相关资源
        最近更新 更多