2016-07-14 78 views
1

所以我想从文件中找到一个字符串。我的代码如下所示:查找文件中的字符串

fname=open('results', 'r') 
lines=fname.readlines() 
for i in lines: 
     print i 
     s=lines[41] 
     x= "0x80000680: 0x00000000\n" 

     if (i == x) : 
     stuff happens 

我的代码读取的文件只是找到该行。匹配'x'但它不会进入if语句。有一件事注意到,当它在输出中输出行时,它似乎有更多的空间,但是在查看变量时它只有一个。我试图为这两个结果放入相同数量的空格,但我仍然无法进入if语句。这里是'我'的输出,当我打印它时,它到达该行: 0x80000680: 0x00000000 它看起来像: str: 0x80000680: 0x00000000\n 当我看着变量。如果我把X的变量,它表明str: 0x80000680: 0x00000000\n

+3

尝试'印刷再版(我)'的。我最好的猜测是,所讨论的实际行是'“0x80000680:\ t0x00000000 \ n”'或类似的东西。 – smarx

+1

空格也是字符。如果它没有进入'if'这意味着它不是'x'的同一行。你可以考虑使用正则表达式(虽然它可能是矫枉过正),只匹配你想要的行的部分。 – kirkpatt

+0

wouldnt它显示特殊字符,如\ t somce它显示\ n? @smarx –

回答

2

你在你的文件行不"0x80000680: 0x00000000\n"

它很容易证明你行不这样

y="0x80000680: "+ "0x00000000\n" #ensure both x and y have different `id` 
x= "0x80000680: 0x00000000\n" 
print "ID:",id(x),id(y) 
print y == x , y.strip() == x.strip() 

的建议,你应该print(repr(i))要真正看到你的线真的看起来像

或者你可以尝试只是检查它是否以

i.startswith("0x80000680:") 

,或者你可以尝试使用re排序匹配

re.match("0x80000680:.*0x00000000",i)