搜索数据库以查找匹配项。需要记录匹配以及不匹配,所以我有完整的数据库,但那些匹配我特别需要知道匹配的部分。
serv = ['6:00am-9:00pm', 'Unavailable', '7:00am-10:00pm', '8:00am-9:00pm', 'Closed']
if self.serv[datas] == 'Today':
clotime.append('')
elif self.serv[data] == 'Tomorrow':
clotime.append('')
elif self.serv[data] == 'Yesterday':
clotime.append('')
else:
clo = re.findall('-(.*?):', self.serv[data])
clotime.append(clo[0])
大部分数据最终通过re.findall运行,但仍有一些数据仍用于初始if / elif检查。
有没有办法压缩这段代码并使用re.findall完成所有操作,甚至可能只需要一行代码。我需要经历/记录的所有内容(整个数据库),以便在我在地图上显示数据时正确处理数据库。
答案 0 :(得分:0)
使用锚点可以匹配整个字符串
clo = re.search('^(?:To(?:day|morrow)|Yesterday)$|-(.*?):', self.serv[data])
if clo is not None:
clotime.append(clo.group(1))
使用您的示例列表:
serv = ['6:00am-9:00pm', 'Unavailable', '7:00am-10:00pm', '8:00am-9:00pm', 'Closed']
clotime = []
for data in serv:
clo = re.search('^(?:To(?:day|morrow)|Yesterday)$|-(.*?):', data)
if clo is not None:
clotime.append(clo.group(1))
print(clotime)
答案 1 :(得分:0)
我会尝试这样的事情:
clo = re.findall('-(\d+):', self.serv[data])
clotime.append(clo[0] if clo else '')
如果我理解你现有的代码,看起来你想在字符串中找不到结束时间的情况下附加一个空字符串?此示例提取结束时间,但只要正则表达式不匹配任何内容,就会使用空字符串。
此外,如果您只是匹配数字,那么最好明确一下。