如何使用可用的字符串和日期时间对象检索 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'中,我们无法区分日期或这个月。
假设我有一大组字符串要解析为一组日期时间对象。我可以使用 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 对我的问题的评论,我找到了
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'中,我们无法区分日期或这个月。