繁体   English   中英

当我尝试从 python 中的文件(从 xlsx 导出)中读取 JSON 数据时,它会抛出 KeyError

[英]When I try to read a JSON data from a file (exported from xlsx) in python, it throws KeyError

我有.xlsx 文件,并将其转换为 JSON。 我正在使用 python 从这个 json 文件中获取数据。 例如,我可以搜索 Build#,然后获得相应的级别,但是当我搜索例如“14H0232”或“14H4812”中的值时,它会引发 KeyError。

'''
import json
 
f = open('try.json')
 

data = json.load(f)

input= input('Enter the value: ')
for i in data['F6']:
    if i['14H0232'] == input:
        print(i['LEVEL'])  
f.close()
'''

json 文件的片段。

''' 
{
    "F6": [
        {
            "LEVEL": "2.0.6.0",
            "ID": "dataID",
            "Build#": "9",
            "prod/dev": "prod ",
            "14H4812": "data1\r\ndata2",
            "14H4826": "data",
            "14H4813": "data1\r\ndata2"
        }  
    ],
    "F5": [
        {
            "LEVEL": "2.0.5.1",
            "ID": "dataID",
            "Build#": "18",
            "prod/dev": "prod",
            "14H0232": "data1: data1\r\ndata2: data2\r\ndata3: data3",
            "14H12321": "data1\r\ndata2"
        }
    ],
    "F4": [
        {
            "LEVEL": "2.0.4.1",
            "ID": "dataID",
            "Build#": "18",
            "prod/dev": "prod",
            "14H0232": "data1: data1\r\ndata2: data2\r\ndata3: data3",
            "14H12321": "data1\r\ndata2" 
        } 
    ]
}

'''

问题出在你的循环中。 当您尝试访问“14H0232”的值时,它只是不存在于您的 json 文件中。 我认为“Build#”的情况不同,因为钥匙总是在那里。 您共享的示例也没有显示 F6 具有您指定的 id 的密钥。 因此,为了避免这种错误,您可以将“if”语句放在 try 块中并捕获错误。

 try: 
        if i['14H0232'] == input:
            print(i['LEVEL']) 
 except KeyError:
        print("The key is not found but the code continues to execute")

暂无
暂无

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

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