J'ai déjà réussi à analyser des données à partir d'un fichier JSON, mais maintenant je suis confronté à un problème avec la fonction que je souhaite atteindre. J'ai une liste de noms, de numéros d'identification et de date de naissance dans un JSON. Ce que je veux obtenir dans Python est de pouvoir laisser un utilisateur entrer un nom et récupérer son numéro d'identification et la date de naissance (le cas échéant).
Voici mon exemple de fichier JSON:
[
{
"id_number": "SA4784",
"name": "Mark",
"birthdate": null
},
{
"id_number": "V410Z8",
"name": "Vincent",
"birthdate": "15/02/1989"
},
{
"id_number": "CZ1094",
"name": "Paul",
"birthdate": "27/09/1994"
}
]
Pour être clair, je veux entrer "V410Z8" et obtenir son nom et sa date de naissance.
J'ai essayé d'écrire du code dans Python mais je ne réussis qu'à rechercher "id_number" et pas ce qu'il y a à l'intérieur "id_number" par exemple "V410Z8".
#!/usr/bin/python
# -*- coding: utf-8 -*-
import json
database = "example.json"
data = json.loads(open(database).read())
id_number = data[0]["id_number"]
print id_number
Merci pour votre soutien, les gars :)
Vous devez parcourir la liste des dictionnaires et rechercher celui avec le id_number
. Une fois que vous l'avez trouvé, vous pouvez imprimer le reste de ses données et les interrompre, en supposant que id_number
est unique.
data = [
{
"id_number": "SA4784",
"name": "Mark",
"birthdate": None
},
{
"id_number": "V410Z8",
"name": "Vincent",
"birthdate": "15/02/1989"
},
{
"id_number": "CZ1094",
"name": "Paul",
"birthdate": "27/09/1994"
}
]
for i in data:
if i['id_number'] == 'V410Z8':
print(i['birthdate'])
print(i['name'])
break
Si vous contrôlez la structure des données, un moyen plus efficace serait d'utiliser le id_number
comme clé (encore une fois, en supposant que id_number
est unique):
data = { "SA4784" : {"name": "Mark", "birthdate": None},
"V410Z8" : { "name": "Vincent", "birthdate": "15/02/1989"},
"CZ1094" : {"name": "Paul", "birthdate": "27/09/1994"}
}
Il vous suffit ensuite d'essayer d'y accéder directement:
try:
print(data["V410Z8"]["name"])
except KeyError:
print("ID doesn't exist")
>> "Vincent"