Есть ли способ преобразовать даты из строкового типа в datetame во время парсинга json по html?

Здравствуйте. Я вытаскиваю json в виде списка словарей по url в сети через requests.get(url, timeout=1).json(). В каждом словаре есть ключ 'date' со значением даты. При парсинге дата остается в типе 'str'. Чтобы перевести все даты в datetime можно посредством цикла преобразовать даты так: datetime.strptime(str_date, "%Y-%m-%d %H:%M:%S"). Есть ли способ преобразовать даты во время парсинга? Может какой-нибудь атрибут в get() или json(), отвечающий за это?
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
import json
import datetime

test = '[{"date":"2000-01-01 00:00:00","foo":"bar"},{"date":"2022-12-31 23:59:59","lorem":"ipsum"}]'

def hook(pairs, format="%Y-%m-%d %H:%M:%S"):
  d = {}
  for k, v in pairs:
    #if isinstance(v, basestring):
    if k == "date":
      try:
        d[k] = datetime.datetime.strptime(v, format)
      except ValueError:
        d[k] = v
    else:
      d[k] = v
  return d

print (json.loads(test, object_pairs_hook=hook))


Идея подсмотрена тут: https://stackoverflow.com/a/14996040
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы