使用IF语句搜索json文件

时间:2017-09-10 09:38:47

标签: python json python-3.x

我需要搜索此json文件并仅打印具有Y状态的人员

[[{"Name": "person1", "Status": "Y"}], [{"Name": "person2", "Status": "N"}], [{"Name": "person3", "Status": "Y"}]]

我可以打开文件并显示数据,但需要在其中搜索。 有人可以帮我完成这个if语句吗? 它需要查看关键值?状态并仅打印两个人Y

for name in OpenFile:
                    **# if Status == Y  what do I do here? :**
                        print ("Name : " +name[i]['Name'])
                        print ("Status : " +name[i]['Status'])

2 个答案:

答案 0 :(得分:0)

您需要遍历列表,从中提取字典并检查密钥'状态':

for element in OpenFile:
    ele = element[0]  # grab the dict
    if ele.get('Status') == 'Y':
        print 'Name: {}'.format(ele.get('Name')
        print 'Status: {}'.format(ele.get('Status')

您的OpenFile对象是一个列表列表,它位于其dict结构中。 因此,您希望解决列表中的第一个对象(即dict),然后执行检查。您可以使用ele.get()

执行此操作

答案 1 :(得分:0)

看起来你正在引用[i],而name是你的迭代器。把它改成这样的东西:

for name in OpenFile:
                    **# if Status == Y  what do I do here? :**
                        print ("Name : " +name['Name'])
                        print ("Status : " +name['Status'])

同时,您的json格式化数据看起来像这样: List[list[dict],list[dict],list[dict],]所以只有这样导航到Name值才有意义:

print(OpenFile[0][0]['Name'])

尝试返回person1,然后将下一个if语句作为基础。

其他调试工具 使用type()来标识json的格式:

type(OpenFile)
type(OpenFile[0])
type(OpenFile[0][0]) 

等,使用错误来弄清楚你的json是如何格式化的