str.endwith()在有效检查中返回false

时间:2016-10-05 17:44:06

标签: python parsing windows-xp

我不需要替代解决方案。

我正在使用Python 2.5.4并想知道为什么会发生这种情况。

我为makefile编写源解析器。

ff = open("module.mk")
f = ff.readlines()
ff.close()
for i in f:
 if ".o \\" in i[-5:]:
  print "Is %s for str: %s" %(i.endswith('.o \\'), i)

我得到了:

Is False for str:       bitmap.o \

每次检查都是如此。

您可以从github

获取module.mk

1 个答案:

答案 0 :(得分:1)

使用.readlines()时,它会在行中包含换行符,在这种情况下为CR-LF。

在检查.endswith()之前,您需要删除该换行符:

with open("module.mk") as data:    
    for i in data.readlines():
        if ".o \\" in i[-5:]:
            print "Is %s for str: %s" %(i.strip().endswith('.o \\'), i)

注意:此处不需要.readlines()来电,我只是将其保留,以便行为与OP的代码保持一致。