2016-07-14 2 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. Вот вывод «i», когда я печатаю его, когда он добирается до этой строки: 0x80000680: 0x00000000 и он выглядит как: str: 0x80000680: 0x00000000\n когда я смотрю на переменные. Если я смотрю на й в переменной она показывает str: 0x80000680: 0x00000000\n

+3

Try 'печать магнезии (I)'. Мое лучшее предположение было бы в том, что фактическая строка, о которой идет речь, это «0x80000680: \ t0x00000000 \ n» или что-то подобное. – smarx

+1

Пространства также являются символами. Если он не входит в 'if', это означает, что это не та же строка, что и' x'. Вы можете рассмотреть возможность использования регулярного выражения (хотя это может быть излишним), чтобы соответствовать только той части строки, которую вы хотите. – kirkpatt

+0

не показывал бы специальные символы, такие как \ t, что-то показывает \ 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) 
Смежные вопросы