2016-10-08 8 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

関連する問題