我有这个字符串:
Sun 10:00am - 10:00pm<br>Mon 10:00am - 10:00pm<br>Tue 10:00am - 10:00pm<br>Wed 10:00am - 10:00pm<br>Thu 10:00am - 10:00pm<br>Fri 10:00am - 10:00pm<br>Sat 10:00am - 10:00pm
我想只提取出现的2个小时(即上午10点和晚上10点)
我正在尝试切片和分裂,但没有成功。
答案 0 :(得分:2)
<强>正则表达式:强>
\r\n
将获得所有(?<=\s)\d{2}:\d{2}[ap]m
个匹配项,您需要使用例如{使用HH:MM
时列出切片[:2]
。
没有正则表达式:
在re.findall
标签上拆分,然后再按空格拆分,获取第二个和最后一个元素:
<br>
示例:强>
str_.split('<br>')[0].split()
[out[1], out[-1]]
答案 1 :(得分:1)
我认为这个正则表达式会这样做:
while (not_done)
{
do_stuff ();
lock (mutex_foo); // this will interrupt the worker thread's main loop
use_shared_resource ();
unlock (mutex_foo);
}
答案 2 :(得分:0)
不需要正则表达式:
s = "Sun 10:00am - 10:00pm<br>Mon 10:00am - 10:00pm<br>Tue 10:00am - 10:00pm<br>Wed 10:00am - 10:00pm<br>Thu 10:00am - 10:00pm<br>Fri 10:00am - 10:00pm<br>Sat 10:00am - 10:00pm"
spl = s.split("<br>") # split at <br> into the days
d={} # empty dict
for s in spl: # for each day
d.setdefault(s.split(" ")[0],[]).extend([x for x in s.split(" ")
if x!= '-'][1:])
print(d)
输出:
{'Wed': ['10:00am', '10:00pm'],
'Sun': ['10:00am', '10:00pm'],
'Fri': ['10:00am', '10:00pm'],
'Tue': ['10:00am', '10:00pm'],
'Mon': ['10:00am', '10:00pm'],
'Thu': ['10:00am', '10:00pm'],
'Sat': ['10:00am', '10:00pm']}
它将您的数据分成几天(<br>
)并将每一天分成其工作日(作为关键字),并将这两个时间分成一个列表,省略我们已经作为dict的关键日期和-
介于两者之间。
您可以按tueTime = d['Tue']
到达周二的时间列表,并可以[0] or [1]
或通过分解open,close = tueTime
来访问它。
如果您只需要第一个,请使用:spl = s.split("<br>")[0]
- dict是无序的,您不会知道哪个是数据字符串中的第一个。