2016-07-14 60 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)