Python 具有灵活字符串格式的字符串的日期时间
我正在用Python解析字符串中的日期时间。我喜欢在pandas中,我可以定义一种格式,但pandas仍然允许我灵活地输入。如下Python 具有灵活字符串格式的字符串的日期时间,python,python-datetime,Python,Python Datetime,我正在用Python解析字符串中的日期时间。我喜欢在pandas中,我可以定义一种格式,但pandas仍然允许我灵活地输入。如下 >>> format = '%Y%m%d %H:%M:%S.%f' >>> pd.to_datetime('20200106 23:00', format=format) Timestamp('2020-01-06 23:00:00') ## OK >>> pd.to_datetime('2020
>>> format = '%Y%m%d %H:%M:%S.%f'
>>> pd.to_datetime('20200106 23:00', format=format)
Timestamp('2020-01-06 23:00:00') ## OK
>>> pd.to_datetime('20200106 23:00:00', format=format)
Timestamp('2020-01-06 23:00:00') ## OK
>>> pd.to_datetime('20200106 23:00:00.000', format=format)
Timestamp('2020-01-06 23:00:00') ## still ok
使用Pandas,我可以接受看起来像%H:%M
或%H:%M:%S
或%H:%M:S.%f
的用户输入。只要不违反原始格式,就可以了。我喜欢这种灵活性
datetime中是否存在相同的行为
>>> datetime.strptime('20200106 23:00:00.000000', format)
datetime.datetime(2020, 1, 6, 23, 0) ## OK
>>> datetime.strptime('20200106 23:00:00', format) ## NOT OK
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python3.6/_strptime.py", line 565, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/usr/lib64/python3.6/_strptime.py", line 362, in _strptime
(data_string, format))
ValueError: time data '20200106 23:00:00' does not match format '%Y%m%d %H:%M:%S.%f'
>datetime.strtime('20200106 23:00:00.000000',格式)
datetime.datetime(2020,1,6,23,0)###好的
>>>datetime.strtime('20200106 23:00:00',格式)##不正常
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib64/python3.6/_strtime.py”,第565行,在_strtime_datetime中
tt,分数=_strtime(数据字符串,格式)
文件“/usr/lib64/python3.6/_strtime.py”,第362行,在_strtime中
(数据字符串,格式))
ValueError:时间数据“20200106 23:00:00”与格式“%Y%m%d%H:%m:%S.%f”不匹配
strtime不喜欢它。我该怎么办?列出用户可能输入的所有格式?然后做一系列尝试?有一个软件包:
…和其他人。如果您发现这些包解析的输入不符合您的喜好,您也可以使用自己的正则表达式。不,这在stdlib
datetime
中不存在。使用第三方库,如python-dateutil
或be摆
。将接受(但忽略)分数秒。这里有一篇文章比较了其中六个(Dateutil、Arrow、Moment、Maya、Delorean、冷冻枪):。它没有直接解决分数秒的问题,其中一些(例如Maya)似乎是位于其他一些库之上的元库。这里有一篇文章讨论Maya、dateutil和Arrow中的解析。仅供参考。