Изучаю python первый день.
Написал скрипт для парсинга текстового файла.
Формат текстового файла в двух словах - файл содержит:
1) названия полей ( одно слово, оканчивается на “:” )
2) строки с данными, относящиеся к расположенным выше полям
( дробное число + строка )
3) ненужный мусор: пустые строки + поля, которые в данный момент не используются.
Пример текстового файла:
ip_s: 0.1 1.1.1.1 0.5 1.2.3.4 ip_s_mask: trash1: 0.1 1.1.1.1 ip_d: ip_d_mask: 1.0 255.255.255.255
Задача скрипта - имея список нужных полей ( который может содержать меньше полей, чем в текстовом файле ),
распарсить файл и сформировать словарь, ключами которого будут поля из файла, а значениями - списки соответствующих строк с данными.
Скрипт у меня работает как требуется, но при этом выглядит просто ужасно:
#!/usr/bin/python2.7 import re types = [ 'ip_s', 'ip_d' ]; filename = "fields.conf" def read_iter( f ): while True: line = f.readline( ) if not line: break line = line.strip( ).rstrip( ':' ) if( not line ): continue yield line f_iter = read_iter( open( filename ) ) one_word_re = re.compile( '^[0-9a-z_]+$' ) cdf = dict( ) try: line = f_iter.next( ) while not line in types: line = f_iter.next( ) cdf_key = line cdf[ cdf_key ] = [] while True: line = f_iter.next( ) while not one_word_re.search( line ): cdf[ cdf_key ].append( line ) line = f_iter.next( ) if( line.replace( '_mask', '' ) in types ): cdf_key = line else: cdf_key = 'trash' cdf[ cdf_key ] = [] except StopIteration: pass del cdf[ 'trash' ] print( cdf )
Прошу знающих людей подсказать способы ( а я уверен, что они есть

Заранее спасибо!