3 回答
TA贡献1772条经验 获得超5个赞
使用 datetime 解析 datetime 字符串,然后可以轻松地单独提取所有部分
from datetime import datetime
dtime = datetime.strptime('%a %b %d %H:%M:%S %Z %Y', 'Sat Apr 18 23:22:15 PDT 2009')
hour = dtime.hour
year = dtime.year
# etc.
有关更多详细信息,请参阅文档:
TA贡献1851条经验 获得超3个赞
您可以使用re.split空格或冒号拆分并获取第 4 个元素:
import re
somedate = "Sat Apr 18 23:22:15 PDT 2009"
re.split('\s|\:', somedate)
['Sat', 'Apr', '18', '23', '22', '15', 'PDT', '2009']
hour = re.split('\s|\:', somedate)[3]
你也可以这样解压:
day_of_week, month, day_of_month, hour, minute, second, timezone, year = re.split('\s|\:', somedate)
这将使您有更多的访问权限
否则,我会采用 @liamhawkins 对 datetime 模块的建议
编辑:如果你正在寻找类似的访问范式到datetime对象,你可以使用一个namedtuple从collections模块:
from collections import namedtuple
date_obj = namedtuple("date_obj", ['day_of_week', 'month', 'day_of_month', 'hour', 'minute', 'second', 'timezone', 'year'])
mydatetime = date_obj(*re.split('\s|\:', somedate))
hour = mydatetime.hour
TA贡献1784条经验 获得超9个赞
如果它真的只是一个字符串并且你想要的数据总是在同一个位置你可以这样做。
String = "Sat Apr 18 23:22:15 PDT 2009"
hour = String[11:13]
print(hour)
这返回,
23
即使它来自日期时间或其他东西,这也是一样的。
如果这是函数的其他输出,您可以将其转换为字符串,然后以相同的方式提取数据。
hour = str(some_output)[11:13]
但是,如果您不确定您想要的数据将始终位于字符串的同一位置,那么我会建议以下内容。
import re
somestring = "More text here Sat Apr 18 23:22:15 PDT 2009 - oh boy! the date could be anywhere in this string"
regex = re.search('\d{2}\:\d{2}\:\d{2}', somestring)
hour = regex.group()[:2]
print(hour)
regex.group() 正在返回,
23:22:15
然后 [:2] 提取前两项返回,
23
添加回答
举报