如何将用户输入与python中json文件中的多个目录进行比较
我有一个json文件“contacts.json”,其中包含:如何将用户输入与python中json文件中的多个目录进行比较,python,json,Python,Json,我有一个json文件“contacts.json”,其中包含: { "Lisa": { "birthday": "09-02-1990" }, "Marge": { "birthday": "05-01-2010" }, "Bart": { "birthday": "23-09-1935" }, "Homer": { "birthday": "22-11-1990" } } 现在我需要编写一个代码来提取用户输入的输入名称的生日。 我写了这段代码,但它不起作用
{
"Lisa": {
"birthday": "09-02-1990"
},
"Marge": {
"birthday": "05-01-2010"
},
"Bart": {
"birthday": "23-09-1935"
},
"Homer": {
"birthday": "22-11-1990"
}
}
现在我需要编写一个代码来提取用户输入的输入名称的生日。
我写了这段代码,但它不起作用
import json
name = input('Enter name of the person you want to see his/her birthday ')
with open('contacts.json') as file:
data = json.load(file)
for i in data[i]:
if name == data[i]:
print(data[i]['Birthday'])
else:
print('Person not found')
file.close()
这应该满足您的要求:
import json
name = input('Enter name of the person you want to see his/her birthday ')
with open('contacts.json') as file:
data = json.load(file)
birthday = ''
for value in data:
if name == value:
birthday = data[value]['birthday']
break
else:
birthday = 'Person not found'
print(birthday)
file.close()
此代码可能对您有所帮助
arr={“Lisa”:{“生日”:“09-02-1990”},“Marge”:{“生日”:“05-01-2010”},“Bart”:{“生日”:“23-09-1935”},“荷马”:{“生日”:“22-11-1990”}
name=“lisa”
bs=“未找到人员”
对于arr.items()中的k、v:
如果k.lower()中的name.lower():
bs=“{0}的生日:{1}”。格式(k,v.get('birth'))
打破
印刷(理学士)
注意:对于Python 2.x,使用arr.iteritems()而不是arr.items()对于一个好问题,json代码也应该格式化,并且应该更精确地指定“它不工作导入json”(例如错误消息)。感谢您的帮助,但这并不能满足我的要求。例如,如果我输入“Lisa”,它应该显示Lisa的生日,如果我的输入名称不在jason文件中,那么它将显示person not Found,这正是它所做的。你试过运行上面的代码吗?在我的例子中,如果你在If语句中看到我们正在检查name==value,那么它总是显示“Person not found”,在每种情况下它都将为false,因为我们将名称“Lisa”作为输入。@SanaRasheed你能打印“data”变量并在这里发布输出吗?我尝试了你在问题中发布的json代码,它在这里工作。也许正如您所说,在读取json时会出现问题。谢谢我使用了.item()函数,现在我的代码可以正常工作了