存储Python RegEx多个组

时间:2018-08-08 17:37:10

标签: python regex multiple-matches

我正在使用python网站封装网站。返回的结果具有以下格式(https://regex101.com/r/irr14u/10),其中除最后一次出现的情况外,其他一切正常,在该情况下,我得到2个日期匹配项(第一个匹配项:周四至周日,周二,周三和第二个)匹配:星期一。)

我正在使用以下代码来获取所需的值。我使用BeautifoulSoup来获取movieDate字符串,但在这里我对其进行了硬编码。

movieDate="Thur.-Sun., Tue., Wed.: 20.50/ 23.00, Mon. 23.00"

weekDays=re.match(',? *(?P<weekDays>[^\d:\n]+):? *(?P<startTime>[^,\n]+)', movieDate).groupdict()['weekDays']
startTime=re.match(',? *(?P<weekDays>[^\d:\n]+):? *(?P<startTime>[^,\n]+)', movieDate).groupdict()['startTime']

我想创建一个如下的字典(它有两个键,因为有两个startTime值); 第一个键是星期四至周日,星期二,星期三。值= 20.50 / 23.00 第二个键是星期一。值= 23:00。 有时可能会使用一把或多把两个钥匙。因此字典如下:

dictionary={ Thur.-Sun., Tue., Wed.: 20.50/ 23.00, Mon.: 23.00}

有没有建议以非僵化的方式实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以使用finditer函数获得所需的输出,将捕获的组的结果动态地附加到字典上。

Python代码段:

import re
movieDate = """
Thur.-Sun., Tue., Wed.: 20.50/ 23.00, Mon. 23.00
"""

d = dict();
r = re.compile(',? *(?P<weekDays>[^\d:\n]+):? *(?P<startTime>[^,\n]+)')
for m in r.finditer(movieDate):
    d[m.group(1)] = m.group(2)

print(d)

打印:

{'Thur.-Sun., Tue., Wed.': '20.50/ 23.00', 'Mon. ': '23.00'}