用于将文本文件的一行与另一个文件的每一行进行比较的条件语句

时间:2019-08-20 18:59:20

标签: python nested xlsxwriter

我正在尝试比较Python中的多个列表。这个想法是,我们有多个列表,并且正在将每个列表中的每个项目与汇总的唯一值列表进行比较。然后,我们创建一个excel工作表,在该工作表中我们将并排显示每个列表,并且特定列表中缺少的任何值都将在该单元格中显示为PLACEHOLDER。

(我很难解释,但如果您在阅读后仍不明白,请提出问题,我会相应地调整解释)

filecount = 0
for file in files:
    filecount += 1
    with open(file) as file_object:
        row = 0
        for line in agg_Names:
            #if line match, output to row
            print (file_object)
            if line in file_object.readlines():
                worksheet.write(row, filecount, line)
                row += 1
                print ("found match")

最后一个if语句不正确。应该将agg_Names中的每个项目与当前列表进行比较并输出值。目前,我只在第一行找到比赛。

1 个答案:

答案 0 :(得分:0)

之所以只得到一行,是因为readlines()将文件的所有行作为列表返回,并且您的比较仅发生一次。

因此,在第一次迭代之后,file_object.readlines()将为空,因为缓冲区(file_object)为空。

您可以对此进行修改,

filecount = 0
for file in files:
    filecount += 1
    with open(file) as file_object:
        file_lines = file_object.readlines()
    row = 0
    for line in agg_Names:
        #if line match, output to row
        if line in file_lines:
            worksheet.write(row, filecount, line)
            row += 1
            print ("found match")

希望这会有所帮助。