我正在尝试找出一种方法来迭代数据库并使用正则表达式匹配其中包含 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)
最佳答案
您可能想使用 r.search()
执行正则表达式搜索:
for i in rez:
if r.search(i[0]):
count = 0
else:
count -= 1
请注意使用 i[0]
从查询返回的每个元组中获取第一个值。
使用i == r
简单地比较元组i
(由查询返回)与编译的正则表达式模式 r
并且永远不会是真的。它不执行给定模式的任何搜索方法。
关于python - 无法使用正则表达式解析sqlite查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39928690/