У меня есть файл, который выглядит следующим образом (только малая часть):Найти номер строки фразы в файле
õ õ ø ø õ ø ø ø ø ø ø ø ø ø ø ø ø Øó ø Øó Ùó õ Ïó ø ø Ïó Ðó ø Ðó ø ø Ðó Öó ø Öó Øó rö sö ø ø sö ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø !ø !ø ø "ø !ø "ø #ø #ø "ø $ø #ø $ø %ø %ø $ø &ø %ø &ø 'ø 'ø &ø (ø 'ø (ø)ø )ø (ø *ø )ø *ø +ø +ø *ø ,ø +ø ,ø -ø -ø ,ø .ø -ø .ø /ø /ø .ø 0ø /ø 0ø 1ø 1ø 0ø 2ø 1ø 2ø 3ø 3ø 2ø 4ø 3ø 4ø 5ø 5ø 4ø 6ø 5ø 6ø 7ø 7ø 6ø 8ø 7ø 8ø 9ø 9ø 8ø :ø 9ø :ø ;ø ;ø :ø <ø ;ø <ø =ø =ø <ø >ø )
End of Binary Section 2013)
(0 "Zone variables:")
Я нашел фрагмент кода, который выглядит следующим образом:
f = open('D:/bat_new.msh','rb')
line_num = 0
search_phrase = '(0 "Zone variables:")'
for line in f.readlines():
line_num += 1
if line.find(search_phrase) >= 0:
print line_num
Когда я запускаю над фрагментом, я получаю номер строки 30308, но если я открою файл в Notepad ++, номер строки будет равен 60533.
Может ли кто-нибудь помочь в этом?
В конечном счете, я хочу пропустить чтение над этой строкой и только прочитать записи ниже.
'find' возвращает самый низкий индекс, который находит данную фразу. Таким образом, вам не нужно выполнять итерацию по линиям с помощью цикла for. – sdasdadas
, вероятно, у вас есть '(0" Зонные переменные: ")' в строке 30308; могут ли ваши данные записываться с небольшими изменениями дважды, так как 30308 составляет примерно 60533/2? – alko
Возможно, что это текстовый файл Windows (за исключением двоичных битов), поэтому приложения Windows, такие как Notepad ++, учитывают только строки Windows, то есть '\ r \ n', а ваш код, который открывает файл в двоичном режиме , подсчитывает все исходные строки, то есть '\ n'. Итак, если есть 30308 '\ r \ n' плюс еще 30225 '\ n' без' \ r', это именно то, что вы найдете. – abarnert