我有一个可能是时间对象的字符串列表。注意:不是日期时间对象或时间戳对象。这些时间没有提及纪元或日期。例如:
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')
产量: 日期时间.日期时间(1900, 1, 1, 6, 0(
我尝试了以下方法:
from dateutil.parser import parse
parse(time_strings[0])
产量: 日期时间.日期时间(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对象?
我找到的最佳解决方案来自熊猫核心库:
from pandas.core.tools.datetimes import to_time
to_time(time_strings[0])
产量: 日期时间.时间(18, 0(
这是所需的输出。但是,它不识别时间格式,例如(下午 4 点、凌晨 3 点等(。欢迎更好的解决方案。