为了账号安全,请及时绑定邮箱和手机立即绑定

如何在python中获取这个正则表达式

如何在python中获取这个正则表达式

一只名叫tom的猫 2021-11-02 20:16:02
我有这个字符串:Sat Apr 18 23:22:15 PDT 2009我想提取23我应该得到什么?像\d\w
查看完整描述

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.

有关更多详细信息,请参阅文档:


查看完整回答
反对 回复 2021-11-02
?
皈依舞

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


查看完整回答
反对 回复 2021-11-02
?
千万里不及你

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


查看完整回答
反对 回复 2021-11-02
  • 3 回答
  • 0 关注
  • 173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信