如何比较Python中的2个文件而忽略带注释的行(即以#开头的行)

时间:2015-05-28 22:54:04

标签: python

我有两个文件,其内容如下所示
     #version 17.3
     #0092的配置信息
     #ssgs的数据
     #州:NA
     #长度:NA
     #生成于4月29日星期三10:30:12 2015年     ------------------------------------
    其余的数据
    ------------------------------------
   我想在忽略以“#”开头的行后比较2个文件    我尝试了文件比较模块,它在块级进行比较(阅读    整个文件作为一个块并进行比较)。我写了一个简单的代码来做行    通过线对比,它似乎不起作用。

def extract_lines(文件):
   对于枚举(文件)中的行:
       if line!=“#”:
           屈服线

open(file1)为f1:
     打开(file2)为f2:
         for(line1),(line2)in itertools.izip(
                       extract_lines(f1),extract_lines(f2)):
             如果line1!= line2:
                 打印“他们是不同的”
                 打破
             其他:
                打印“他们是相同的。

2 个答案:

答案 0 :(得分:2)

extract_lines函数中,而不是

for line in enumerate(files):
    if line!= "#":

你应该这样做:

for line in files:
    if not line.startswith("#"):

答案 1 :(得分:1)

我认为你是在比较由于压缩而成对的线,你可以使用两个生成器表达式将它们压缩在一起以过滤以#开头的行:

from itertools import izip

with open("in1.txt") as f, open("in2.txt") as f2:
    a = (line for line in f if not line.startswith("#"))
    b = (line for line in f2 if not line.startswith("#"))
    for l1, l2 in zip(a ,b):
        print(l1,l2)