Уведомления

Группа в Telegram: @pythonsu

#1 Май 14, 2012 13:32:41

mchudyk
Зарегистрирован: 2012-05-14
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск между метками.

Помогите пожалуйста. Есть файл который содержит строки типу:
line1
line2
<begin>
line4
line5
<end>
Как мне вивести содержимое между <brgin> i <end>?

Офлайн

#2 Май 14, 2012 14:01:08

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Поиск между метками.

[14:54] home:~ echo "line1
> line2
> <begin>
> line4
> line5
> <end>" > file
[14:54] home:~ bpython
>>> lines = map(lambda s: s.strip(), open('file', 'r').readlines())
>>> print '\n'.join(lines[lines.index('<begin>')+1:lines.index('<end>')])
line4
line5

Сформулируйте более конкретно задачу. Вариантов решения очень много.

>>> with open('file', 'r') as f:
...     while f.next().strip() != '<begin>':
...         pass
...     for line in f:
...         if line.strip() == '<end>':
...             break
...         else:
...             print line.strip()
...             
line4
line5



Отредактировано fata1ex (Май 14, 2012 14:07:36)

Офлайн

#3 Май 14, 2012 14:24:49

mchudyk
Зарегистрирован: 2012-05-14
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск между метками.

Спасибо работает, то что надо. Один нюанс - если строка начинается из отступов их почему то удаляет.

Офлайн

#4 Май 14, 2012 14:32:04

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Поиск между метками.

Замените в последнем варианте print line.strip() на print line.rstrip().



Отредактировано fata1ex (Май 14, 2012 14:38:12)

Офлайн

#5 Май 14, 2012 14:41:45

mchudyk
Зарегистрирован: 2012-05-14
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск между метками.

все ок, спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version