У меня есть текстовый файл, разделенный табуляцией на 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.
Есть подсказки, как это можно решить?