Как удалить несколько строк из файла json, используя python - PullRequest
0 голосов
/ 06 марта 2020

У меня есть следующий пример JSON файл

 [
  {
    "name": "A"
    "email": "A@test.com",
    "admin": false,
    "groupAdmin": false,
    "profileUpdatable": true
  },
  {"name": "B"
    "email": "B@test.com",
    "admin": false,
    "groupAdmin": false,
    "profileUpdatable": true
  },
  {"name": "C"
    "email": "C@test.com",
    "admin": false,
    "groupAdmin": false,
    "profileUpdatable": true
  },
  {"name": "A"
    "admin": false,
    "groupAdmin": false,
    "profileUpdatable": true
  }
]

Я хочу сделать следующее, используя python3:

  • Хотите удалить блок, который не ' ключ "email".
  • Хотите извлечь только значение электронной почты

Заранее спасибо

1 Ответ

1 голос
/ 06 марта 2020

Вам не нужно удалять блоки. Переберите людей и возьмите ключ электронной почты, если он есть.

Кстати, у вас есть ошибка в вашем файле. После значения для имени в каждом объекте отсутствует запятая.

data =  [
  {
    "name": "A",
    "email": "A@test.com",
    "admin": False,
    "groupAdmin": False,
    "profileUpdatable": True
  },
  {"name": "B",
    "email": "B@test.com",
    "admin": False,
    "groupAdmin": False,
    "profileUpdatable": True
  },
  {"name": "C",
    "email": "C@test.com",
    "admin": False,
    "groupAdmin": False,
    "profileUpdatable": True
  },
  {"name": "A",
    "admin": False,
    "groupAdmin": False,
    "profileUpdatable": True
  }
]

def get_emails(data: list):
    e_mails = []
    for person in data:
        if "email" in person:
            e_mails.append(person["email"])
    return e_mails

if __name__ == "__main__":
    print(get_emails(data=data))
...