繁体   English   中英

在Python中将各种人类可读的时间格式解析为时间对象(datetime.time)?

[英]Parse various human readable time formats to a time object (datetime.time) in Python?

我有一个可能是时间对象的字符串列表。 注意: 不是 datetime对象或timestamp对象。 这些时间没有参考时代或日期。 例如:

time_strings = ['6:00PM', '7:00pm', '8:00am', '17:00:00', '4PM']

是否有一个好的解析工具可以将它们转换为datetime.time对象,而不是datetime.datetime对象(默认情况下,该对象输入当前日期)?

标准的'datetime.datetime.strptime()都要求时间采用已知格式,并产生datetime.datetime.object,例如:

from datetime import datetime
datetime.strptime('6:00', '%H:%M')

产生:datetime.datetime(1900,1,1,6,0)

我尝试了以下方法:

from dateutil.parser import parse
parse(time_strings[0])

收益:datetime.datetime(2017,8,24,18,0)

import pandas as pd
pd.to_datetime(time_strings[0])

收益率:时间戳('2017-08-24 18:00:00')

from pytimeparse import parse as tparse
tparse(time_strings[0])

失败(返回空值)

import parsedatetime
cal = parsedatetime.Calendar()
cal.parse(time_strings[0])

收益率:(time.struct_time(tm_year = 2017,tm_mon = 8,tm_mday = 24,tm_hour = 18,tm_min = 0,tm_sec = 0,tm_wday = 3,tm_yday = 236,tm_isdst = 1),2)

对我而言,至关重要的是,如果不在数据中,则不能推断出任何日期。

是否有更好的python实用程序(python 3)将各种人类可读的时间表达式转换为datetime.time对象?

我发现的最佳解决方案是从pandas核心库中获取的:

from pandas.core.tools.datetimes import to_time
to_time(time_strings[0])

产生:datetime.time(18,0)

这是所需的输出。 但是,它无法识别时间格式,例如(下午4点,凌晨3点等)。欢迎使用更好的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM