майнинг базы данных для извлечения текстовых полей в Python - PullRequest
0 голосов
/ 19 мая 2011

У меня есть база данных, из которой я пытаюсь извлечь определенную информацию.

Логическая структура выглядит следующим образом:

дс; QUERY

фт; ИМЯ (нужно это поле)

FD; ПОСЛЕДОВАТЕЛЬНОСТЬ (нужно это поле)

FD; ПОСЛЕДОВАТЕЛЬНОСТЬ

... (больше полей "fd;")

фт; ИМЯ (нужно это поле)

FD; ПОСЛЕДОВАТЕЛЬНОСТЬ (нужен только первый fd)

... (больше полей; полей)

футов; ИМЯ (нужно это поле)

FD; ПОСЛЕДОВАТЕЛЬНОСТЬ (нужен только первый fd)

дс; ДРУГОЙ ЗАПРОС

Эта структура повторяется тысячи раз, по одному на каждый запрос. Я заключил в скобки поля, которые мне нужно извлечь. Я попробовал следующий код, как функцию, так и фрагмент, но он не работает. Я проверил, что области видимости переменных верны. Мне нужно, чтобы мой список содержал то же количество записей, что и поля "ft". С моим кодом, 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

1 Ответ

1 голос
/ 19 мая 2011

В 6-й строке кода флаг == 1 должен иметь только 1 знак равенства.В противном случае он никогда не будет установлен на 1, что затем не пройдёт ваши другие проверки.Кроме того, если только код ниже того, который обрезан, вам не нужен ни один из этих продолжений - он автоматически перейдет к следующей итерации цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...