字符出现时切片

时间:2018-02-15 18:44:37

标签: python regex split slice

我有这个字符串:

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点)

我正在尝试切片和分裂,但没有成功。

3 个答案:

答案 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是无序的,您不会知道哪个是数据字符串中的第一个。