社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

CFD • 5 年前 • 2306 次点击  

我有这个绳子:

Sat Apr 18 23:22:15 PDT 2009

我想提取

23

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51915
 
2306 次点击  
文章 [ 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 有关详细信息: