54 votes

Quel est le remplacement de dateutil.parser dans python3 ?

Python 2.x dispose d'une excellente fonction appelée dateutil.parser qui transforme une date au format ISO8601 en une valeur datetime python. Elle n'est pas présente dans Python 3. Quel est son remplacement ?

89voto

Lennart Regebro Points 52510

Dateutil est un module tiers. Il a récemment été porté à Python 3 avec dateutil 2.0, et les fonctions de l'analyseur ont également été portées.

Le remplacement est donc dateutil.parser . Vous avez juste oublié de l'installer.

1 votes

Je pensais que dateutil était installé par défaut sur Python 2 ?

81 votes

pip install python-dateutil

8 votes

Vous devez faire from dateutil import parser pour obtenir ce module directement parce que import dateutil est spartiate __init__.py et ne vous donnera pas dateutil.parser comme vous pouvez vous y attendre.

14voto

EarlyCoder Points 977

Vous devez d'abord trouver le nom exact du module en utilisant la recherche pip :

pip search dateutil

Ensuite, installez la version que vous voulez (en supposant que py-dateutil) :

pip install py-dateutil

Maintenant, lancez le shell et importez le module (piège : le module ne s'appelle pas py-dateutil) :

import dateutil.parser

Vous devriez être prêt à partir !

2voto

onteria_ Points 18947

Vous pouvez y parvenir par le biais du datetime du module strptime méthode.

>>> import datetime
>>> mydate = datetime.datetime(2002,12,4, 12, 30).isoformat()
>>> mydate
'2002-12-04T12:30:00'
>>> parsed_date = datetime.datetime.strptime( mydate, "%Y-%m-%dT%H:%M:%S" )
>>> parsed_date
datetime.datetime(2002, 12, 4, 12, 30)

strptime dispose d'un ensemble flexible d'options pour l'analyse de votre date. Voir Comportement de strftime() et strptime() pour plus d'informations.

3 votes

C'est vrai, mais il n'y a pas de moyen simple de gérer le suffixe Z par rapport à un décalage +/-. Cela nécessite un codage supplémentaire. Mais je suppose que je vais devoir le faire.

23 votes

Downvote parce que ce code ne gère qu'un cas très spécial et simple de la norme ISO8601 et se plantera sur toute autre chaîne de date formatée ISO8601 valide. La question fait référence à la norme ISO8601 en général.

-10voto

Si vous installez pandas, il est fourni avec. En tout cas, cela m'arrive.

C:\Users\dirak3d>pip install pandas
Collecting pandas
  Downloading https://files.pythonhosted.org/packages/a9/e8/ca7637c51767809cd7328dd01e246b8f2ec0fde566c9b7440b91d9a33460/pandas-0.23.3-cp37-cp37m-win32.whl (6.8MB)
    100% |████████████████████████████████| 6.8MB 137kB/s
Collecting pytz>=2011k (from pandas)
  Downloading https://files.pythonhosted.org/packages/30/4e/27c34b62430286c6d59177a0842ed90dc789ce5d1ed740887653b898779a/pytz-2018.5-py2.py3-none-any.whl (510kB)
    100% |████████████████████████████████| 512kB 216kB/s
Requirement already satisfied: numpy>=1.9.0 in c:\users\dirak3d\appdata\local\programs\python\python37-32\lib\site-packages (from pandas) (1.15.0)
Collecting python-dateutil>=2.5.0 (from pandas)
  Downloading https://files.pythonhosted.org/packages/cf/f5/af2b09c957ace60dcfac112b669c45c8c97e32f94aa8b56da4c6d1682825/python_dateutil-2.7.3-py2.py3-none-any.whl (211kB)
    100% |████████████████████████████████| 215kB 23kB/s
Collecting six>=1.5 (from python-dateutil>=2.5.0->pandas)
  Downloading https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Installing collected packages: pytz, six, python-dateutil, pandas

3 votes

Pourquoi installer pandas et d'autres paquets supplémentaires si vous voulez seulement python-dateutil ? Alors vous pouvez simplement pip install python-dateutil .

0 votes

Il y a deux modules appelés dateutils et python-dateutils. root@kali:~# pip freeze | grep dateutil dateutils==0.6.12 python-dateutil==2.8.2 Par conséquent, je pense qu'il voulait dire que le vrai vient déjà des pandas peut-être.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X