2014-03-12 2 views
0

Я хочу создать .py-файл, который может открыть .txt-документ и прочитать данные, разделить его на слова, тогда я хотел бы иметь возможность искать дата и время. Время может меняться и может быть неточным, чтобы оно могло падать между двумя моментами. Я хотел бы напечатать две строки, которые выпадают до и после искомой даты/времени.Я хочу напечатать строку до и после матча

Я использую это до сих пор:

temp_list =[] 
open_file = open(temp_data, "r") 
contents = open_file.readlines()[57:] #skipping first 57 lines. 
for i in range(len(contents)): 
words = contents[i].split() 
if (len(words) == 43) and (words[0] == date) and (words[1] < time): #using 43 will read/print only lines that have 43 words in them as they are the lines with important data. 
    print words[0], "|", words[1], "|", words[12], "F" 

Я совершенно новым для кодирования и посмотрел везде, но я до сих пор не в состоянии найти что-нибудь. Любая помощь приветствуется, спасибо!

EDIT (это не позволит мне размещать фотографии текстовый файл по какой-либо причине без репутации):

2010-10-02 19: 00: 01,15 M ~ D 0 2 1 1 2 1 - 38,4 22,7 3,7 НН 20 -1,1 29,2 0 -99,9 0 24,1 16,0 3 71 0 000 172 0284 0473 0949 1023 0224 0228 0,0 080 13415 3 0710 0 0 FM

2010-10-02 19: 30: 00.47 M ~ D 0 2 1 1 2 1 -40,2 21,7 2,3 NN 21 -1,6 29,5 0 -99,9 0 24,1 22,0 3 71 0 000 172 0301 0470 0949 1023 0191 0201 0,0 070 13416 3 0444 0 0 FM

2010-10- 02 20: 00: 01,73 М ~ D 0 2 1 1 2 0 -28,6 20,6 2,1 NN 22 -1,8 29,1 0 0 24,1 -99,9 23,9 3 74 0 000 172 0241 0474 0949 0187 0193 одна тысяча двадцать три 0,0 067 13417 1 0003 ~ 0 0 FM-

+0

В чем смысл чисел 57 и 43 в вашем коде? «Магические числа» обычно обескуражены при программировании. – RexE

+0

43 - количество слов в строке (игнорируя все строки, у которых нет 43 слов в них, что означает, что в этих строках нет данных). 57 пропускает первые 57 строк, поскольку в них нет данных. – user3412431

ответ

0

You нужна функция, которая вернет True, если линия соответствует. Похоже, ваш оператор if делает это. Если он вернет True, напечатайте строки contents[i-2:i+2].

+0

Я смущен тем, как написать код для этого :( Содержимое должно быть словами 0, 1 и 12, так как вся строка содержит 43 разных слова. – user3412431

+0

Это поможет, если вы разместили файл .txt, чтобы люди может лучше понять вашу проблему. – RexE

+0

Образец файла txt добавляется в исходное сообщение. В строке должно быть 43 слова (разделенных пробелами, так как текст завернут на эту страницу). – user3412431

Смежные вопросы