0

特定の情報を抽出しようとしているデータベースがあります。

論理構造は次のようになります。

GC; クエリ

フィート; 名前 (このフィールドが必要です)

fd; SEQUENCE (このフィールドが必要)

fd; 順序

... (さらに「fd;」フィールド)

フィート; 名前 (このフィールドが必要です)

fd; SEQUENCE (最初の fd のみが必要)

... (さらに fd; フィールド)

フィート; 名前 (このフィールドが必要です)

fd; SEQUENCE (最初の fd のみが必要)

GC; 別のクエリ

この構造は、QUERY ごとに 1 つずつ、何千回も繰り返されます。抽出する必要があるフィールドを括弧で囲みました。関数とスニペットの両方として次のコードを試しましたが、機能しません。変数のスコープが正しいことを確認しました。「ft」フィールドと同じ数のエントリを含む mylist が必要です。私のコードでは、mylist が作成されますが、空のリストです。私の論理が間違っているアイデアはありますか? 私はpython 2.6.5を使用しています

  mylist = []
  query = raw_input("query: ")
  flag = 0 

  for line in lines:  

    if line.startswith('gc; ' + query):
        flag == 1
        continue        
    elif line.startswith('fc; ') and flag == 1:
        print line
        flag = 1        
    elif line.startswith('fd; ') and flag == 1:
        print line
        mylist.append(line)
        flag = 0    
    elif line.startswith('fd; ') and flag == 0:
        continue
    else:
        continue
4

1 に答える 1

1

コードの 6 行目では、flag == 1 に等号が 1 つだけ含まれている必要があります。そうしないと、1 に設定されず、他のチェックに失敗します。さらに、切断されたコードより下にさらにコードがない限り、それらの継続は必要ありません。ループの次の反復に自動的に移動します。

于 2011-05-19T11:33:10.580 に答える