【问题标题】:How to retrieve strptime model with string and datetime object available?如何使用可用的字符串和日期时间对象检索 strptime 模型?
【发布时间】:2020-07-08 09:02:15
【问题描述】:

假设我有一大组字符串要解析为一组日期时间对象。我可以使用dateutils.parser 并遍历该集合,但它需要更多的计算机密集型并且比解析一个需要更长的时间,检索应用的strptime 格式,然后执行datetime.strptime(string, model)

我想创建一个函数,有点像下面这样:

def retrieve_format(datetime_object, string):
    #do some things
    return model

model 是一个字符串。

我没有找到任何解释 dateutils 解析器内部工作原理的东西,我相信开发人员有能力添加这样的功能。

你知道怎么做吗? 这样可以节省时间和计算能力。

示例

假设我有一组格式与此相同的字符串:

myStr = '27/03/2020 - 16:20'

我可以的

myDate = dateutils.parser.parse(myStr)

并得到'myDate'作为存在

datetime.datetime(2020, 3, 27, 16, 20)

但现在我可以这样使用我的功能了

>>> model = retrieve_format(myDate, myStr)
>>> print(model)
%d/%m/%Y - %H:%M

我可以这样做

datetime_set = {}
for formatted_string in set:
    raw = datetime.datetime.strptime(formatted_string, model)
    datetime_set.add(raw)

非常有效地处理所有其他元素。

【问题讨论】:

标签: python datetime parsing strptime


【解决方案1】:

好的,感谢snakecharmerb 对我的问题的评论,我找到了this comment,它使用了dateinfer 库。在这里,只需要字符串。可以用 pip 安装

pip install pydateinfer

一个工作示例如下

import dateinfer
dateinfer.infer(['27/03/2020 - 16:20', '28/03/2020 - 14:56' ])

输出是

'%d/%m/%Y - %H:%M'

输入总是一个列表,即使它只包含一个元素。 根据字符串的歧义,列表应该有更多或更少的元素。这是因为例如在'04/04/2020'中,我们无法区分日期或月份。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多