2
votes

Identifier (convertir) le texte en Python en date

J'essaie de trouver le meilleur moyen de convertir "vendredi 1er mars 2019" ou "samedi 2 mars 2019" en objet datetime python.

J'ai essayé en fractionnant, que j'avais des réflexions sur les regex, mais je suis tout à fait sûr qu'il y a une manière plus «élégante» de le faire

De la chaîne "Vendredi 1er mars 2019", j'attends le 01/03/2019 ou le 01/03/2019

TNX!


0 commentaires

3 Réponses :


1
votes

Vous allez rencontrer des problèmes avec 1st , 2nd .

Alors, essayez ceci (sans ajouter de bibliothèque externe / tierce):

def convdate(s):
    parts = s.split(" ")
    ds = "{} {} {} {}".format(
        parts[0],
        re.sub('[^0-9]','', parts[1]),
        parts[2],
        parts[3]
    )
    return dt.strptime(ds, "%A %d %B %Y")

Si vous voulez en faire une fonction, procédez comme suit:

import re
from datetime import datetime as dt
ds = "Friday 1st March 2019"
parts = ds.split(" ")
ds = "{} {} {} {}".format(
   parts[0],
   re.sub('[^0-9]','', parts[1]),
   parts[2],
   parts[3]
)
a = dt.strptime(ds, "%A %d %B %Y")


0 commentaires


1
votes

Veuillez vous référer à une question déjà répondue: Comment faire obtenir le datetime à partir d'une chaîne contenant '2nd' pour la date en Python?

Comme je ne peux que le répéter, la solution est d'utiliser l'analyseur de dateutil:

import datetime
simplified_txt = "Friday 1 March 2019"
datetime_obj = datetime.datetime.strptime(simplified_txt,"%A %d %B %Y")

Dans les coulisses, je suppose que les parties "1ère" et "2ème" sont extraites d'une manière ou d'une autre (par exemple fractionnement + regex) et simplifiées à sa valeur de jour uniquement. Selon une entrée comme celle-ci, la bibliothèque datetime commune peut être utilisée avec la chaîne de format de date appropriée:

from dateutil.parser import parse

your_string = "Friday 1st March 2019"
date_obj = parse(your_string)


0 commentaires