为了账号安全,请及时绑定邮箱和手机立即绑定

Python:转换 2 位/4 位年份

Python:转换 2 位/4 位年份

catspeake 2021-10-19 16:43:08
我正在尝试使用以下代码将 Python 中的日期格式“31-Dec-09”转换为“2009-12-31”:df = ['19-Jan-19', '4-Jan-19']   f = [datetime.datetime.strptime(x,'%d-%mmm-%y').strftime('%Y-%m-%d') for x in df]print(f)得到以下错误:time data '9-Jan-19' does not match format '%d-%mmm-%y'我在某处读到匹配两位数的年份“00”需要小写的 y 而不是大写的 y。无论哪种方式,我都遇到了同样的错误,所以我想还有其他问题。有什么帮助吗?
查看完整描述

2 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

您的%y和%Y模式很好,问题是您%mmm在这里使用了。该datetime.strptime()方法的模式都是单字母图案,并且%mmm作为被视为%m图案后跟两个文字m字符。%m匹配数字月份(1 或 2 位数字,零填充可选)。所以19-1mm-19会匹配,但19-Jan-19不会因为月份不是数字并且m缺少两个文字字符。


要使用的正确模式在'%d-%b-%y'这里,其中%b匹配缩写的月份名称。


演示:


>>> import datetime

>>> df = ['19-Jan-19', '4-Jan-19']

>>> [datetime.datetime.strptime(x,'%d-%b-%y').strftime('%Y-%m-%d') for x in df]

['2019-01-19', '2019-01-04']


查看完整回答
反对 回复 2021-10-19
?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

由于您使用速记表示法指定月份,因此您应该使用 %b 而不是 %mmm (这不是日期时间中的有效格式)


查看完整回答
反对 回复 2021-10-19
  • 2 回答
  • 0 关注
  • 284 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信