我试图想出一种方法来迭代数据库,并使用正则表达式匹配其中包含02的所有行。当匹配时,计数应重置为0,当没有匹配时,计数应累积为负1.当我使用列表时,代码有效。
import sqlite3
import re
conn = sqlite3.connect('p34.db')
c = conn.cursor()
r = re.compile(r'\b[5-9]*(?:0[5-9]?2|2[5-9]?0)[5-9]*\b')
q = "SELECT Number FROM 'Pick 3'"
c.execute(q)
rez = c.fetchall()
count = 0
for i in rez:
if i == r:
count = 0
else:
count = count -1
print(count)
conn.close()
print (rez)
答案 0 :(得分:0)
您可能希望使用r.search()
执行正则表达式搜索:
for i in rez:
if r.search(i[0]):
count = 0
else:
count -= 1
注意使用i[0]
从查询返回的每个元组中获取第一个值。
使用i == r
只需将比较元组i
(由查询返回)与编译的正则表达式模式r
进行比较,并且永远不会为真。它不执行给定模式的任何搜索方法。