Python: IndexError: список индексов вне диапазона и синтаксическая ошибка - PullRequest
0 голосов
/ 26 ноября 2018

Я пишу скрипт Python для сравнения 2 CSV-файлов: один содержит 2 столбца, а другой содержит 1 столбец.Цель этого скрипта - отсортировать все совпадающие строки.Но каждый раз, когда я пытаюсь запустить скрипт, я получаю ошибку в синтаксисе или в индексе.Можете ли вы помочь мне исправить мой сценарий?

import csv
reader1 = csv.reader(open('interactors.csv', 'r'), delimiter=" ")
row1 = next(reader1)
reader2 = csv.reader(open('proteome_plas.csv', 'r'), delimiter=" ")
row2 = next(reader2)
if (row1[0] == row2[0]) or (row1[0] == row2[1]):
    print ("match")
else:
    print ("different")

1 Ответ

0 голосов
/ 26 ноября 2018

Попробуйте напечатать, и вы увидите:

    import csv
    reader1 = csv.reader(open('interactors.csv', 'r'), delimiter=" ")
    row1 = next(reader1)
    print(row1)
    reader2 = csv.reader(open('proteome_plas.csv', 'r'), delimiter=" ")
    row2 = next(reader2)
    print(row2)

Вывод будет:

['col1', 'col2'] - row1
['col_11'] - row2

Вы пытаетесь получить доступ к элементу row2 [1], которого не существует

Попробуйте это:

    import csv
    reader1 = csv.reader(open('interactors.csv', 'r'), delimiter=" ")
    row1 = next(reader1)
    print(row1)
    reader2 = csv.reader(open('proteome_plas.csv', 'r'), delimiter=" ")
    row2 = next(reader2)
    print(row2)
    # Maybe in your case need to fill row2 to len(row1)
    if row1 == row2:
        print ("match")
    else:
        print ("different")

И если вы хотите получить любой равный элемент: используйте

max_row = row1 if len(row1) > len(row2) else row2
min_row = row2 if len(row1) > len(row2) else row1

for elem in min_row:
    if elem in max_row:
        print('match')
        break
...