如何使用可用的字符串和日期时间对象检索 strptime 模型?

How to retrieve strptime model with string and datetime object available?

假设我有一大组字符串要解析为一组日期时间对象。我可以使用 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)

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

好的,感谢 snakecharmerb 对我的问题的评论,我找到了 which uses the 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'中,我们无法区分日期或这个月。