我有一个非常愚蠢的日期时间字段:
2016423123
其中2016
为年份,4
为月份,23
为日期,123
无关紧要。
format
的{{1}}参数是否支持指令(如正则表达式)忽略输入字符串中的字符?
我知道可以删除多余的字符,然后将结果提供给解析器,但我有一个问题,我有几种可能的格式(不是我的发明...),我正在考虑使用尝试/ catch来解析它们。
答案 0 :(得分:1)
如果字符串的最后3个字符无关紧要,请在使用字符串切片将字符串转换为datetime
对象时跳过它。例如:
>>> my_str[:-3]
'2016423'
以下是datetime.strptime
的用法:
>>> my_str = '2016423123'
>>> from datetime import datetime
# v removing last 3 characters from string
>>> datetime.strptime(my_str[:-3], '%Y%m%d')
datetime.datetime(2016, 4, 23, 0, 0)
其他例子,每月/每天的单/双位数组合:
>>> my_str = '20160423123'
>>> datetime.strptime(my_str[:-3], '%Y%m%d')
datetime.datetime(2016, 4, 23, 0, 0)
>>> my_str = '2016043123'
>>> datetime.strptime(my_str[:-3], '%Y%m%d')
datetime.datetime(2016, 4, 3, 0, 0)
>>> my_str = '201643123'
>>> datetime.strptime(my_str[:-3], '%Y%m%d')
datetime.datetime(2016, 4, 3, 0, 0)
>>> my_str = '2016123123'
>>> datetime.strptime(my_str[:-3], '%Y%m%d')
datetime.datetime(2016, 12, 3, 0, 0)