存储 Python 正则表达式多个组
Storing Python RegEx multiple groups
我正在使用 python 抓取网站。返回的结果具有以下格式( https://regex101.com/r/irr14u/10 ),除了最后一次我得到 2 个匹配日期(第一个 match:Thur.-Sun.,Tue.,Wed.第二场比赛:周一)
我正在使用以下代码来获取我想要的值。我使用 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}
有什么建议可以以一种非沼泽的方式实现这一目标吗?
您可以使用 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'}
我正在使用 python 抓取网站。返回的结果具有以下格式( https://regex101.com/r/irr14u/10 ),除了最后一次我得到 2 个匹配日期(第一个 match:Thur.-Sun.,Tue.,Wed.第二场比赛:周一)
我正在使用以下代码来获取我想要的值。我使用 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}
有什么建议可以以一种非沼泽的方式实现这一目标吗?
您可以使用 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'}