web-dev-qa-db-fra.com

Analyser les chaînes de date rfc3339 en Python?

J'ai un jeu de données où toutes les dates ont le format suivant:

2012-10-09T19:00:55Z

J'aimerais pouvoir utiliser des méthodes comme .weekday sur elles. Comment puis-je les convertir au bon format en Python?

96
Spearfisher

Vous pouvez utiliser dateutil.parser.parse pour analyser les chaînes en objets datetime.

_dateutil.parser.parse_ tentera de deviner le format de votre chaîne. Si vous connaissez le format exact à l’avance, vous pourrez utiliser datetime.strptime auquel vous fournissez une chaîne de format (voir Brent Washburne). répondre).

_from dateutil.parser import parse

a = "2012-10-09T19:00:55Z"

b = parse(a)

print(b.weekday())
# 1 (equal to a Tuesday)
_
165
Ffisegydd

Ceci a déjà été répondu ici: Comment traduire une chaîne datetime ISO 8601 en un objet datetime Python?

d = datetime.datetime.strptime( "2012-10-09T19:00:55Z", "%Y-%m-%dT%H:%M:%SZ" )
d.weekday()
88
Brent Washburne

Vous devriez jeter un oeil sur moment qui est un port python de l'excellente libs js momentjs .

Un de ses avantages est la prise en charge des formats de chaînes ISO 8601 , ainsi que d’un "% format" générique:

_import moment
time_string='2012-10-09T19:00:55Z'

m = moment.date(time_string, '%Y-%m-%dT%H:%M:%SZ')
print m.format('YYYY-M-D H:M')
print m.weekday
_

Résultat:

_2012-10-09 19:10
2
_
10
brunetton