# -*- coding: utf-8 -*-
from __future__ import with_statement
LEGEND = """
8 - Районы
39,40,41 - Дата
25 - Стоимость
12 - Улица
26 - Номер дома
28 - Номер квартиры
16 - Кол-во комнат
18 - Этаж
20 - Общая площадь
21 - Жилая площадь
22 - Площадь кухни
11 - Санузел
7 - Тип постройки
19 - Этажность дома
10 - Планировка
6 - Балкон
5 - Материал стен
15 - Материал перекрытий
29 - Описание
"""
LEGEND_FIELDS = {}
for line in LEGEND.strip().splitlines():
numbers, title = line.split(' - ')
numbers = map(int, numbers.split(','))
for number in numbers:
LEGEND_FIELDS[number] = title
REQUIRED_FIELDS = [8, 39, 40, 41, 25, 12, 26, 28, 16, 18, 20, 21, 22, 11, 7, 19, 10, 6, 5, 15, 29]
def iterate_blocks(fobj):
block = []
for line in fobj:
if line.startswith('##########'):
pass
elif line.startswith('**********'):
yield block
block = []
else:
block.append(line)
def process_block(lines, fields):
info = {}
for line in lines:
index, tail = line.rstrip('\n\r').split(' ', 1)
index = int(index)
if index in fields:
info[index] = tail.strip()
return info
def display(info):
keys = [8, 25, 12, 26, 28, 16, 18, 20, 21, 22, 11, 7, 19, 10, 6, 5, 15, 29]
print ''.ljust(30, '=')
for key in keys:
print LEGEND_FIELDS[key].ljust(30, '!'), info[key]
def main():
with open('data.dat') as fobj:
for block in iterate_blocks(fobj):
display(process_block(block, REQUIRED_FIELDS))
if __name__ == '__main__':
main()