Я хочу выполнить два цикла for одновременно в python, чтобы одновременно читать две строки с одинаковым индексом в двух разных файлах.
Это то, что я пробовал:
def load_dataset(train_path: str, label_path: str) -> Tuple[List[str], List[str]]:
words = []
labels = []
with open(train_path, encoding='utf8') as tp, open(label_path, encoding='utf8') as lp:
for line_tp in tp, line_lp in lp:
line_tp = line_tp.strip()
line_lp = line_lp.strip()
if line_tp and line_lp:
word = line_tp
label = line_lp
words.append(word)
labels.append(label)
return words, labels
Но когда я попытался вызвать функцию
(train_list, label_list) = load_dataset(train_path, label_path)
Я получил:
UnboundLocalError: local variable 'line_lp' referenced before assignment
Теперь я действительно думаю, что проблема в том, что первый цикл for выполняется перед вторым циклом, есть ли способ выполнить их одновременно с одним и тем же индексом?
Возможный дубликат Как перебирать строки в двух файлах одновременно?
@ParitoshSingh спасибо, я не видел этого ответа, я попробую
Вы можете использовать zip
для получения строк из обоих файлов:
for line_tp,, line_lp in zip(tp, lp):
....
Здесь вообще нет двух циклов for. Как вы должны понять из трассировки ошибок, ошибка будет происходить в самом операторе for; потому что это совсем не то, как вы перебираете два отдельных списка.
Довольно сложно сказать, что вы пытаетесь сделать, но я подозреваю, что вы имели в виду это:
for line_tp, line_lp in zip(tp, lp):
python использует
zip
для «одновременного повторения двух (или более) вещей».