我有一份日期清单:
dates = ["Jan2016","Feb2016","Mar2016"]
我想将这些日期转换为日期时间格式,即Jan2016 = 201601
我的第一个想法是创建一个月份字典及其相关数字,然后将其映射到列表中。
months = {"Jan":1,"Feb":2,"Mar":3}
这是我目前的代码:
dates = ["Jan2016","Feb2016","Mar2016"]
dic = {"Jan":1, "Feb":2,"Mar":3}
month = []
year = []
for date in dates:
month.append(date[:3])
year.append(date[3:])
month = [dic[n] if n in dic else n for n in month]
d = dict(zip(month,year))
print(d)
此代码的输出是这样的字典:
{1: '2016', 2: '2016', 3: '2016'}
解决这个问题最灵活的方法是什么?
答案 0 :(得分:2)
正如@Martijin评论的那样,您不能将日期时间设为201601
,但如果您想要字符串,则可以使用datetime模块中的strptime
和strftime
进行转换:< / p>
dates = ["Jan2016","Feb2016","Mar2016"]
from datetime import datetime
[datetime.strftime(datetime.strptime(d, "%b%Y"), "%Y%m") for d in dates]
# ['201601', '201602', '201603']
如果您不熟悉转换规范,%b
代表月份缩写名称,%Y
年份代表世纪,%m
月份代表十进制数字( 0-12)
答案 1 :(得分:1)
你好,你可以试试map()
months = {"Jan":"01", "Feb":"02", "Mar":"03"}
dates = ["Jan2016","Feb2016","Mar2016"]
list = map(lambda x :x[3:] + months[x[:3]], dates)
输出中:
['201601','201602','201603']
答案 2 :(得分:0)
您可以使用以下内容:
from datetime import datetime
datetime.strptime('Jan2016', '%b%Y')
对于您的列表,您可以将上述内容与list comprehension:
结合使用>>> res = [datetime.strptime(d, '%b%Y') for d in dates]
>>> [datetime.strftime(d, "%Y%m") for d in res]
['201601', '201602', '201603']
注意:由于您的日期列表中缺少这一天,因此1天将用于res
个项目。