Форум сайта python.su
0
Добрый день.
Возникла простая задача распарсить файл. Файл имеет следующую структуру:
—-
Деталь:
Название детали
Описание:
Текст с описание детали
Деталь:
и.т.д.
—-
В результате нужно получить название деталей и описания.
Я реализовал данную задачу следующим образом (я новичок за код сильно не пинайте):
text='' name='' shablon1=u'Деталь:' shablon2=u'Описание:' _f=open(filename,'r') for line in iter(_f): line=line.decode('utf8') if line.rstrip() == shablon1: if name and text: my_fun(name,text) text='' name=next(_f)[:-1] if line.rstrip() !=shablon1: if line.rstrip() !=shablon2: text+=line.rstrip() my_fun(name,text)
Офлайн
25
#-*- coding: utf8 -*- import os lines = u'''Деталь: Название детали Описание: Текст с описание детали Еще Текст Деталь: Название детали2 Описание: Текст с описание детали2 Еще текст2'''.splitlines() def read_details(lines): result = {} for i, l in enumerate(lines): if l == u'Деталь:': is_desc = False desc = result.setdefault(lines[i+1], []) elif l == u'Описание:': is_desc = True elif is_desc: desc.append(l) return result details = read_details(lines) for name, desc in details.iteritems(): print u'detail: {} description: {}'.format(name, os.linesep.join(desc))
Отредактировано s0rg (Ноя. 26, 2012 16:47:49)
Офлайн
0
Спасибо, за ответ. Описание детали состоит более чем из одной строки.
Офлайн
25
myarikИсправленный код в первом посте.
Описание детали состоит более чем из одной строки.
Офлайн
0
Спасибо.
Офлайн