2016-10-08 2 views
2

데이터베이스를 반복하고 정규 표현식을 사용하여 02가있는 모든 행을 일치시키는 방법을 찾아 내려고합니다. 일치가 이루어지면 카운트가 0으로 재설정되고 일치하지 않으면 카운트는 음수 1만큼 누적되어야합니다. 코드를 사용하면 코드가 작동합니다.정규식을 사용하여 sqlite 쿼리를 통해 구문 분석 할 수 없습니다.

for i in rez: 
    if r.search(i[0]): 
     count = 0 
    else: 
     count -= 1 

참고 쿼리에 의해 반환 된 각 튜플의 첫 번째 값을 얻을 수 i[0]의 사용 :

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

'i == r'은 정규 표현식에서 유효하지 않습니다. [search] (https://docs.python.org/3/library/re.html#re.search)와 같은 regex 메소드를 사용해야합니다. – idjaw

답변

0

당신은 아마 정규 표현식 검색을 할 r.search()를 사용하고 싶습니다. i == r를 사용

단순히 비교 컴파일 된 정규 표현식 후두둑 r에 튜플 i (쿼리에 의해 반환)하고 진실하지 않습니다. 주어진 패턴의 검색 메소드를 실행하지 않습니다.

+0

효과가있었습니다. 고맙습니다. – rj23

관련 문제