Python字符串转日期报错‘unconverted data remains:16’问题排查
问题分析:datetime.strptime报错‘unconverted data remains: 16’的原因
先看你贴的这段代码:
print(date) print(type(date)) print(len(date)) dt = datetime.strptime(date, "%d/%m/%y")
运行后输出的date值是14/11/2016,类型是字符串,长度10,这时候用%d/%m/%y去解析就会触发unconverted data remains: 16的错误,原因其实很直观:
- 你用的格式符
%y是两位数的年份格式,它只会匹配日期字符串里的最后两位数字(也就是16),但你的日期字符串是四位年份2016。当strptime按照%d/%m/%y规则解析时,它会把14匹配%d(日),11匹配%m(月),20匹配%y(两位年份)——这时候字符串里还剩下16没被解析,自然就抛出了“未转换数据残留”的错误。
要解决这个问题,只需要把格式符里的小写%y改成大写的%Y就行,%Y是四位年份的格式符,刚好能匹配2016这个完整的四位年份。修正后的代码如下:
from datetime import datetime # 别忘了提前导入datetime模块哦 date = "14/11/2016" print(date) print(type(date)) print(len(date)) dt = datetime.strptime(date, "%d/%m/%Y") print(dt) # 这时候就能正常输出datetime对象啦
总结一下:小写y对应两位年份,大写Y对应四位年份,搞混两者就会出现这种解析不完整的错误~
内容的提问来源于stack exchange,提问作者Jerry
相关产品推荐
相关产品推荐

