2016-10-05 46 views
-2

我不需要备用解决方案。str.endwith()在有效检查中返回false

我正在使用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 \ 

所以每一个检查。

当你使用它.readlines()包括在这种情况下,在该行的换行符,CR-LF你可以从github

+5

'i'上有空白。试试'i.strip()。endswith('。o \\')'。在完全分开的说明中,为什么仍然使用2.5.4? –

+0

这将是一个很好的答案,@MorganThrapp。 –

+0

@ morgan-thrapp,大部分解析器代码写在我的手机上。 Qpython上的android buggy,在诺基亚pys60上工作正常,我选择pys60。基于2.5.4核心的最后一款pys60。 – Fedor

回答

1

module.mk。

您需要检查.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的码。