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

时间:2018-07-21 16:14:53

标签: python date datetime datetime-format

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

可能的输入格式

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的新手,所以我想知道是否有更有效的方法来完成此操作?

2 个答案:

答案 0 :(得分:1)

这是使用第三方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']

答案 1 :(得分:1)

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'