Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有灵活字符串格式的字符串的日期时间_Python_Python Datetime - Fatal编程技术网

Python 具有灵活字符串格式的字符串的日期时间

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

我正在用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('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中的解析。仅供参考。