将字母数字日期字符串转换为数字日期字符串

Convert Alphanumerical Date String to Numerical Date String

我知道那里有类似的问题,但大多数只是使用 strptime 方法将字母数字日期字符串转换为 datetime 对象,这不是我想要的。我要做的就是像这样转换字符串。

可能的输入格式

December 7, 2015
October 24, 2018

期望输出

2015-12-07
2018-10-24

我是怎么做到的

""" funding_expiration[0] is equal to strings like 'December 7, 2015' """
funding_expiration = funding_expiration[0].text.split()
""" still need to convert Month (%B) to ## (%m) """
funding_expiration[1] = funding_expiration[1].replace(',', '')
# add padding to single digit days
if len(funding_expiration[1]) is 1:
    funding_expiration[1] = funding_expiration[1].zfill(1)
# format numerical date string
funding_expiration = funding_expiration[2] + '-' + funding_expiration[0] + '-' + funding_expiration[1]

我仍在努力找出一种有效的方法来将月份的全名转换成相应的数字。我是 Python 的新手,所以我想知道是否有更有效的方法来完成此操作?

这是使用第 3 方的解决方案 dateutil

from dateutil import parser

L = ['December 7, 2015', 'October 24, 2018']

res_str = [parser.parse(x).strftime('%Y-%m-%d') for x in L]

['2015-12-07', '2018-10-24']

datetime.strptime 也适用于您的情况。您可以使用 %B 指令来解析完整的月份名称。

import datetime

s = 'December 7, 2015'

date_string = str(datetime.datetime.strptime(s, '%B %d, %Y').date())

>>> date_string
'2015-12-07'