我知道那里也有类似的问题,但是最简单的方法是使用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的新手,所以我想知道是否有更有效的方法来完成此操作?
答案 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'