J'ai quelques dates dans un fichier json, et je recherche celles qui correspondent à la date d'aujourd'hui:
import os
import time
from datetime import datetime
from pytz import timezone
input_file = file(FILE, "r")
j = json.loads(input_file.read().decode("utf-8-sig"))
os.environ['TZ'] = 'CET'
for item in j:
lt = time.strftime('%A %d %B')
st = item['start']
st = datetime.strptime(st, '%A %d %B')
if st == lt :
item['start'] = datetime.strptime(st,'%H:%M')
J'ai eu une erreur comme celle-ci:
File "/home/--/--/--/app/route.py", line 35, in file.py
st = datetime.strptime(st, '%A %d %B')
File "/usr/lib/python2.7/_strptime.py", line 328, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: 02:05
Avez-vous des suggestions ?
La valeur de st
à st = datetime.strptime(st, '%A %d %B')
ligne quelque chose comme 01 01 2013 02:05
et strptime
ne peuvent pas analyser ceci. En effet, vous obtenez une heure en plus de la date ... Vous devez ajouter %H:%M
à votre rythme.
La meilleure réponse consiste à utiliser le from dateutil import parser
.
usage:
from dateutil import parser
datetime_obj = parser.parse('2018-02-06T13:12:18.1278015Z')
print datetime_obj
# output: datetime.datetime(2018, 2, 6, 13, 12, 18, 127801, tzinfo=tzutc())
Vous devez analyser tous de la chaîne d'entrée, vous ne pouvez pas simplement ignorer les parties.
from datetime import date, datetime
for item in j:
st = datetime.strptime(item['start'], '%A %d %B %H:%M')
if st.date() == date.today():
item['start'] = st.time()
Ici, nous comparons la date à la date d'aujourd'hui en utilisant plus d'objets datetime
au lieu d'essayer d'utiliser des chaînes.
L'alternative est de ne passer que partie du item['start']
chaîne (séparant juste le temps), mais il n'y a vraiment pas de point ici, pas quand vous pourriez tout analyser en une seule étape en premier.
Eh bien, c'était très simple. Il me manquait le format de la date dans le fichier json, donc je devrais écrire:
st = datetime.strptime(st, '%A %d %B %H %M')
car dans le fichier json la date était comme:
"start": "Friday 06 December 02:05",