Я пытаюсь создать CSV-файл, назовем его File- C, просматривая некоторые «идентификаторы» из File-A в File-B.
If File-B has the 'ID' from File-A
THEN put the record in File-C.
Файл поиска имеет следующий формат csv:
File-A
ID,incr,event
1111.1234557,5,missing create
Файл данных имеет атрибут 'ID' и другие атрибуты:
File-B
ID,incr,name,email,accountno
1111.1234557,5,john,emailaddress,22020233902
Выходные данные или File- C будут точно такими же, как файл данных, но с меньшим количеством записей, поскольку они были отфильтрованы на основе того, что мы нашли в файле поиска.
Я написал приведенный ниже код, и он дает ошибка «индекс вне диапазона». У меня есть ощущение, что это связано с размером двух списков, которые проходят через. Я не знаю, как они связаны.
def read_from_file(csv_file):
with open(csv_file, 'rt') as f:
file_reader = csv.reader(f)
next(file_reader, None)
data = list(file_reader)
return data
data_file= read_from_file('/CSV_RECORDS_20200308_A.csv')
lookup_file= read_from_file('/CSV_RECORDS_20200308_B.csv')
output_data = []
for row in lookup_file:
for val in data_file:
if row[0] == val[0]: ## FAILES HERE WITH ERROR 'IndexError: list index out of range'##
output_data.append(row)
with open('/INSERTBACK_TEST.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerows(output_data)
Полное сообщение об ошибке:
Traceback (последний последний вызов):
runtime_1 | Файл "/opt/project/etl/landing/unibanks/code.py", строка 102, в
runtime_1 | если строка [0] == val [0]:
runtime_1 | IndexError: список индексов выходит за пределы диапазона
Я не могу понять это. Любая помощь будет оценена.