Quelle regreg puis-je utiliser pour extraire la date (jj / mm / aaaa) et heure (HH: mm: ss) d'une chaîne sous la forme: p>
de sorte que, étant donné la chaîne ci-dessus, je récupère: p>
thu jun 07 01:13:25 +0000 2018 code> p>
07 / juin / 2018 code> et 01:13:25 code> p>
3 Réponses :
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')
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
au lieu d'une regex complexe, utilisez le module Pour analyser la date (ref: codes de formatage ): p> pour formater un objet DateTime: p> Vous pouvez également récupérer les éléments de date / heure individuels, tels que: p> DateTime code>.
Il n'y a pas de modèle tel que
jj / mm / yy code> 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 de11th index à l'index 19ème Code> comme 2e partieVous 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.