1
votes

Python: analyser la chaîne d'horodatage avec 7 chiffres pour les microsecondes jusqu'à datetime

J'ai une chaîne d'horodatage qui ressemble à ceci:

timestamp = "2019-03-14T14:37:37.000000+01:00"
parsed_timestamp = datetime.datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S.%f%z") #ValueError: time data '2019-03-14T14:37:37.0000000+01:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'

Je dois l'analyser jusqu'à datetime. Comme il y a 7 chiffres au lieu de 6 pour les microsecondes, le format suivant ne correspond pas:

2019-02-16T10:41:20.6080000+01:00

Comment puis-je analyser ce format?


2 commentaires

Quelle est votre sortie souhaitée?


Voulez-vous seulement la date?


3 Réponses :


1
votes

Utilisation de dparser :

Date: 2019-02-16


0 commentaires

0
votes

Il y a en fait deux choses qui ne vont pas avec vos données: vous avez sept chiffres pour les microsecondes, et votre fuseau horaire a un deux-points.

J'utiliserais une expression régulière pour résoudre ce problème: p >

datetime.datetime(2019, 2, 16, 10, 41, 20, 608000, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))

Résultat:

timestamp = "2019-02-16T10:41:20.6080000+01:00"
cleaned_timestamp = re.sub('(\d{6})\d(\+\d{2})(:)(\d{2})', r'\1\2\4', timestamp)
parsed_timestamp = datetime.datetime.strptime(cleaned_timestamp, "%Y-%m-%dT%H:%M:%S.%f%z")
parsed_timestamp


0 commentaires

1
votes

On dirait que vous pouvez utiliser un simple découpage de chaînes.

2019-02-16

Sortie:^

import datetime
timestamp = "2019-02-16T10:41:20.6080000+01:00"
parsed_timestamp = datetime.datetime.strptime(timestamp[:26], "%Y-%m-%dT%H:%M:%S.%f").date() 

print(parsed_timestamp)

p>


0 commentaires