Как искать ключевые слова в 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

  1. Десериализуйте данные в объект 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)
  1. Затем найдите и распечатайте свою запись:
      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в ваших данных. Подробнее о списке словарей ищите здесь .

Другие вопросы по тегам