Py学习  »  Python

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

CFD • 5 年前 • 2321 次点击  

我有这个绳子:

Sat Apr 18 23:22:15 PDT 2009

我想提取

23

我应该买什么?类似于\d\w

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51915
 
2321 次点击  
文章 [ 5 ]  |  最新文章 5 年前
Sirsmorgasboard
Reply   •   1 楼
Sirsmorgasboard    6 年前

如果它真的只是一个字符串,并且您想要的数据总是在同一个位置,那么您可以这样做。

String = "Sat Apr 18 23:22:15 PDT 2009"
hour = String[11:13]
print(hour)

这又回来了,

23

即使是从datetime或其他什么东西开始,这也一样。

如果这是某个函数的其他输出,您可以将其转换为字符串,然后以相同的方式提取数据。

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个
paras chauhan
Reply   •   2 楼
paras chauhan    6 年前

希望它能在字符串中找到日期并返回日期

def get_date(input_date): date_format = re.compile("[0-9]{2}:[0-9]{2}:[0-9]{2}") date_search =date.search(input_date) if date_search: date = date_search.group() if date:
return date[:2] return ''

Chris Larson
Reply   •   3 楼
Chris Larson    6 年前

而这可以通过 re ,使用 datetime.strptime 在@liamhawkins的回答中[ https://stackoverflow.com/a/54600322/214150 ]如果你总是在处理格式化的日期,最好是这样。

此外,您还可以通过简单地使用 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)
C.Nivs
Reply   •   4 楼
C.Nivs    6 年前

你可以用 re.split 要在空格或冒号上拆分并获取第四个元素:

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
liamhawkins
Reply   •   5 楼
liamhawkins    6 年前

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

docs 有关详细信息: