Python:IndexError:列表索引超出范围和语法错误

时间:2018-11-26 09:54:13

标签: python file csv syntax-error index-error

我正在编写一个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 :(得分:0)

尝试打印,您将看到:

    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