Поиск в текстовом файле во вложенном l oop в Python - PullRequest
0 голосов
/ 06 мая 2020

У меня есть текстовый файл, разделенный табуляцией на 4 столбца. Также у меня есть список значений, которые нужно перебирать и искать в текстовом файле, чтобы получить значение одного из столбцов:

Вот мой код (Python 2.7):

def populate_data():
  file = open('file.txt', 'r')

  values = ['value1', 'value2', 'value3']
  secondary_values = ['second_value1', 'second_value2', 'second_value3']
  os = 'iOS'

  i = 0
  outputs = []
  while i < len(values):

    value = values[i]
    secondary_value = secondary_values[i]

    output = lookup(file, os, value, secondary_value)
    if output != None:
      outputs.append(output)
    i += 1

def lookup(file, input_os, input_value, input_secondary_value):
  for line in file:
    columns = line.strip().split('\t')
    if len(columns) != 4:
      continue
    else:
      value = columns[0]
      secondary_value = columns[1]
      os = columns[2]
      output = columns[3]

      if input_os == os and input_value == value and input_secondary_value == secondary_value:
        return output

Поиск в основном должен работать как этот SQL оператор:

SELECT output FROM data_set WHERE os='os' AND value='value' and secondary_value='secondary_value'

Проблема, с которой я столкнулся, заключается в том, что метод поиска работает во время просмотра, а также поддерживает для l oop и, очевидно, родитель, в то время как l oop не ждет, пока внутренний l oop завершит sh и вернет значение перед продолжением. Это приводит к тому, что, несмотря на факт совпадения, данные не возвращаются. Если бы это было JavaScript, я бы сделал это с помощью Promises, но не уверен, как этого добиться в Python.

Есть подсказки, как это можно решить?

1 Ответ

0 голосов
/ 06 мая 2020

Правильнее было прочитать файл и вставить все строки в dict следующим образом:

dc = dict()
dc[value+secondary_value+os] = output

Затем получить доступ к значениям в основном while l oop.

...