Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 转换使用'格式的日期;th';到日期时间进行日期比较?_Python_Date_Datetime_Python Dateutil - Fatal编程技术网

Python 转换使用'格式的日期;th';到日期时间进行日期比较?

Python 转换使用'格式的日期;th';到日期时间进行日期比较?,python,date,datetime,python-dateutil,Python,Date,Datetime,Python Dateutil,我知道有人以某种形式问过我这个问题,但我想知道如何转换日期,例如: Saturday, May 18th, 2019 到类似2019-05-18这样的日期,以便我可以将其与其他日期进行比较。我知道dateutil可以这样做,但不幸的是,我使用的是Pycharm,如果不将Python从2.7升级到3,它将不允许我安装该软件包。有没有一种方法可以简单地在Python中实现这一点?您也可以将datetime与re模块一起使用: >>> from datetime import da

我知道有人以某种形式问过我这个问题,但我想知道如何转换日期,例如:

Saturday, May 18th, 2019

到类似2019-05-18这样的日期,以便我可以将其与其他日期进行比较。我知道dateutil可以这样做,但不幸的是,我使用的是Pycharm,如果不将Python从2.7升级到3,它将不允许我安装该软件包。有没有一种方法可以简单地在Python中实现这一点?

您也可以将
datetime
re
模块一起使用:

>>> from datetime import datetime
>>> import re
>>> s = 'Saturday, May 18th, 2019'
>>> datetime.strptime(re.sub('(\d+)(st|nd|rd|th)', '\g<1>', s), '%A, %B %d, %Y')
datetime.datetime(2019, 5, 18, 0, 0)
>>> 
>>从datetime导入datetime
>>>进口稀土
>>>s=‘2019年5月18日星期六’
>>>datetime.strtime(re.sub(“(\d+)(st | nd | rd | th)”,\g',s),“%A,%B%d,%Y”)
datetime.datetime(2019,5,18,0,0)
>>> 
并且打印得更好:

>>> print(datetime.strptime(re.sub('(\d+)(st|nd|rd|th)', '\g<1>', s), '%A, %B %d, %Y'))
2019-05-18 00:00:00
>>> 
打印(datetime.strtime(re.sub(“(\d+)(st | nd | rd | th)”,\g',s),“%A,%B%d,%Y”) 2019-05-18 00:00:00 >>> ,但这是一种不使用
re的解决方案,适用于不熟悉regexp的人:

from datetime import datetime

s = 'Saturday, May 18th, 2019'
sl = s.split()
sl[2] = sl[2][:-3] # remove 'th,'
datetime.strptime(' '.join(sl), '%A, %B %d %Y')

但是python2.7是生命的终结,为什么不切换到python呢3@DeveshKumarSinghU9转发:谢谢-除了一个小问题外,这个功能几乎完美无瑕。替换“nd”是有问题的,因为“Sunday”变成了“Suay”。是否有方法抛出异常?例如,如果string=“Sunday”或“星期四”(这两种情况下都会看到删除的字符与上面的代码一起)使用
re.sub(“(\d+)(st | nd | rd | th)”,\g',s)