python str!= str没有给出预期的结果

时间:2019-02-01 10:08:58

标签: python

我有两个数据文件:

file1(815行):

 1    2    3     a 
 2    3    3     b
 1    2    2     b

file2(1200行):

 2    5     5    a
 2    1     1    b
 1    2     2    c

我想要的输出如下:

  1    2     2    c

这应该是file2中的行,与file1的最后一列不同(您会注意到,在前两行中,两个文件中的最后一列都是相同的);不管前三列包含什么值,如果最后一列是唯一的,则打印该行。

我很天真地尝试使用以下(python3)代码来执行此操作,但未成功,到目前为止,请指导。谢谢

with open(file1,'rU') as ij:
    for i in ij:
        i = i.rstrip().split('\t')
        with open(file2,'rU') as ji:
            for j in ji:
                j = j.rstrip().split('\t')
                if str(i[-1]) != str(j[-1]):
                    print(j)

使用这种方法,我将打印以下内容:

2    3     3   b                                                                                                            
4    2     3   c

1 个答案:

答案 0 :(得分:2)

您可以尝试使用以下方法:

with open(filename1) as file1, open(filename2) as file2:
  for line1, line2 in zip(file1, file2):
    if line1.split()[-1] != line2.split()[-1]:
      print(line2)

这假设了几件事:

  • 这两个文件将逐行进行比较。
  • File1所包含的行比File2所包含的行多或少(没有插入的行,没有删除的行,否则比较将不同步)。
  • 可以使用line.split()查找列,因此内容用空格分隔。