我有这个字符串:
Sat Apr 18 23:22:15 PDT 2009
我想提取
23
我应该买些什么?像\ d \ w
答案 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