我正在使用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}
有没有建议以非僵化的方式实现这一目标?
答案 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'}