-1
votes

Regex pour extraire la date et l'heure de la chaîne

Quelle regreg puis-je utiliser pour extraire la date (jj / mm / aaaa) et heure (HH: mm: ss) d'une chaîne sous la forme:

thu jun 07 01:13:25 +0000 2018

de sorte que, étant donné la chaîne ci-dessus, je récupère:

07 / juin / 2018 et 01:13:25


4 commentaires

Il n'y a pas de modèle tel que jj / mm / yy dans votre chaîne donnée, une chose simple que vous devriez faire est diviser la chaîne jusqu'à 10e index dans une partie et de 11th index à l'index 19ème comme 2e partie


Vous pouvez regarder Stackoverflow.com/a/56965132/4050015 ou Stackoverflow.com/a/56965680/4050015


La meilleure chose à faire est d'utiliser un parseur de date quelque chose comme ça dateParser.readthedocs.io/fr/Latest


Celles-ci ne répondent pas à la question Bien que je conviens que l'utilisation de STRATTIME est une meilleure façon de continuer à convertir une chaîne à un objet DateTime.


3 Réponses :


3
votes

Vous pouvez utiliser des utils de messagerie pour analyser la date, puis convertir le format souhaité:

from email import utils
date = utils.parsedate_to_datetime('Thu Jun 07 01:13:25 +0000 2018')

date.strftime('%d/%b/%Y')
date.strftime('%H:%M:%S')


0 commentaires

0
votes

Comme mentionné dans les commentaires et l'autre réponse. La meilleure approche générale consiste à utiliser les bibliothèques python appropriées, mais de répondre à votre question comme on a été posée.

import re
test = "Thu Jun 07 01:13:25 +0000 2018"

date_re = re.compile("^(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s+(?P<mon>(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))\s+(?P<dd>\d{2})\s+(?P<hh>\d{2}):(?P<mm>\d{2}):(?P<ss>\d{2})\s+\+\d{4}\s+(?P<y>\d{4})\s*$")

tokens = date_re.match(test)
fields = tokens.groupdict()
print(f"{tokens['dd']}/{tokens['mon']}/{tokens['y']} {tokens['hh']}:{tokens['mm']}:{tokens['ss']}")

>>> 07/Jun/2018 01:13:25


0 commentaires

2
votes

au lieu d'une regex complexe, utilisez le module DateTime .

Pour analyser la date (ref: codes de formatage ): xxx

pour formater un objet DateTime: xxx

Vous pouvez également récupérer les éléments de date / heure individuels, tels que: xxx


0 commentaires