Как искать ключевые слова в JSON
Я использую python json, и я хочу, чтобы мой код Python выполнял поиск определенных ключевых слов в файле JSON.
Обычно он должен искать «имя профиля», а затем идти на одну строку вниз и распечатывать адрес электронной почты профиля.
[
{
"profilename": "Test123"
"email": "reid.warren@undefined.name",
"phone": "+1 (983) 443-3504",
"address": "359 Rapelye Street, Holtville, Marshall Islands, 9692"
},
{
"profilename": "QTest123"
"email": "amelia.wilkinson@undefined.us",
"phone": "+1 (831) 563-3240",
"address": "525 Allen Avenue, Iola, Kentucky, 894"
}
]
Например, код должен искать имя профиля «Test123» и распечатывать его электронное письмо, например, переходя на одну строку вниз и распечатывая электронное письмо.
Я пробовал много вещей, но я даже не подошел ни на шаг ближе, так что обмен моим текущим кодом поможет 0: /
Спасибо.
3 ответа
Если я вас правильно понял, вы пытаетесь найти профиль по полю
profilename
и вернуть пользователя
email
.
profiles = [
{
"profilename": "Test123",
"email": "reid.warren@undefined.name",
"phone": "+1 (983) 443-3504",
"address": "359 Rapelye Street, Holtville, Marshall Islands, 9692",
},
{
"profilename": "QTest123",
"email": "amelia.wilkinson@undefined.us",
"phone": "+1 (831) 563-3240",
"address": "525 Allen Avenue, Iola, Kentucky, 894",
},
]
def get_profile_email(profilename):
profile = next(
(item for item in profiles if item["profilename"] == profilename), None
)
if profile:
return profile["email"]
return None
print(get_profile_email("Test123"))
Выход:
reid.warren@undefined.name
Чтобы загрузить профили из файла:
import json
with open("profiles.json", "r") as f:
profiles = json.loads(f.read())
import json
json = [
{
"profilename": "Test123",
"email": "reid.warren@undefined.name",
"phone": "+1 (983) 443-3504",
"address": "359 Rapelye Street, Holtville, Marshall Islands, 9692"
},
{
"profilename": "QTest123",
"email": "amelia.wilkinson@undefined.us",
"phone": "+1 (831) 563-3240",
"address": "525 Allen Avenue, Iola, Kentucky, 894"
}
]
profile_name = "Test123"
data = [x for x in json if x['profilename'] in profile_name]
print(data[0]['email'])
>>>reid.warren@undefined.name
- Десериализуйте данные в объект Python (в данном случае список словарей):
import json
json_str = '''[
{
"profilename": "Test123",
"email": "reid.warren@undefined.name",
"phone": "+1 (983) 443-3504",
"address": "359 Rapelye Street, Holtville, Marshall Islands, 9692"
},
{
"profilename": "QTest123",
"email": "amelia.wilkinson@undefined.us",
"phone": "+1 (831) 563-3240",
"address": "525 Allen Avenue, Iola, Kentucky, 894"
}
]'''
list_of_dicts = json.loads(json_str)
- Затем найдите и распечатайте свою запись:
try:
profile_entry = next(el for el in list_of_dicts if el['profilename'] == 'Test123')
except StopIteration:
raise
print(profile_entry['email'])
StopIteration
происходит, когда у вас нет
profilename == Test123
в ваших данных. Подробнее о списке словарей ищите здесь .