0

我有一个脚本,它使用 xlrd 比较两个 .xls 工作表之间的值。默认情况下,它可以让我查找相似之处,并将它们写入 txt 文件。如果我传入一个参数,我可以查找每个 .xls 独有的设备,并将其写入 txt 文件。现在,我遍历每个 .xls 中的行,并在发现两个文件之间存在相似性时将标志标记为 True。当标志标记为 False 时,它​​只会从第一张表写入主机。这是带有标志的代码:

else:
    for row1 in range(sheet1.nrows):
        inboth = False
        for row2 in range(sheet2.nrows):
            if sheet2.row_values(row2)[0].split(".")[0] == sheet1.row_values(row1)[0].split(".")[0]:
                inboth = True
        if not inboth:
            outfile.write(sheet1.row_values(row1)[0].split(".")[0] + ",File1\n")
    for row2 in range(sheet2.nrows):
        inboth = False
        for row1 in range(sheet1.nrows):
            if sheet1.row_values(row1)[0].split(".")[0] == sheet2.row_values(row2)[0].split(".")[0]:
                inboth = True
        if not inboth:
            outfile.write(sheet2.row_values(row2)[0].split(".")[0] + ",File2\n")

有没有更有效的方法可以在不使用“inboth”标志的情况下做到这一点?有没有一种解决方案,我不需要两次遍历两张纸?

4

1 回答 1

4

你想要的是 Pythonset数据类型。http://docs.python.org/library/sets.html遍历第一个文件并将找到的所有设备放入 set 中,s然后将第二个文件中的所有设备放入 set 中t。然后做:

r = s.symmetric_difference(t)

r将在一个文件中包含设备列表,但不是两个文件。

于 2012-10-24T19:25:25.510 回答