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

时间:2019-02-08 21:06:21

标签: python regex

我有这个字符串:

Sat Apr 18 23:22:15 PDT 2009

我想提取

23

我应该买些什么?像\ d \ w

5 个答案:

答案 0 :(得分:2)

使用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.

有关更多详细信息,请参见docs

答案 1 :(得分:1)

您可以使用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对象的访问范例,则可以使用collections模块中的namedtuple

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

答案 2 :(得分:0)

希望这会找到字符串中的日期并返回日期

type DeviceOf<Type extends Device['type']> = Device extends (infer D) ? D extends Device ? D['type'] extends Type ? D : never : never : never; type Result = DeviceOf<'Laptop'>;

答案 3 :(得分:0)

虽然可以使用re完成此操作,但假设您始终在处理格式化日期,则最好在@liamhawkins答案[https://stackoverflow.com/a/54600322/214150中使用datetime.strptime

此外,您只需使用string method.split())并对结果列表进行基本切片就可以实现您的目标。例如:

import re

word = 'Sat Apr 18 23:22:15 PDT 2009'

# Example using re.
rehour = re.findall('(\d+):\d+:\d+', word)
print('rehour:', *rehour)

# Example using string.split() and slicing.
somedate = word.split(' ')
somehour = somedate[3][:2]
print('somedate:', somedate)
print('somehour:', somehour)

答案 4 :(得分:0)

如果它确实只是一个字符串,并且所需的数据将始终位于您可以执行的操作的同一位置。

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