2014-09-24 3 views
1

Извините, что задал вопрос начинающим, но я полностью застрял, и я очень надеюсь, что кто-то может мне помочь.Поиск между целями в python

У меня есть большой файл документа с разделами, которые я хочу сохранить, и биты, от которых я хочу избавиться. Все разделы, которые я хочу сохранить «Редактору», но они состоят из нескольких абзацев (не последовательного числа, а только первого запускает «Редактору»).

Кусочки, которые я хотел бы отбросить, имеют начальный абзац со словом «LEAD», и снова они могут содержать несколько абзацев.

Я хотел бы использовать python для перемещения по документу и когда он найдет экземпляр «LEAD», чтобы перейти к следующему экземпляру «To Editor:», но до сих пор мне ничего не удалось больше, чем извлечение первого бита текста, который я хочу.

В случае это помогает вообще, это было с этим кодом (за исключением я отступ это правильно, честно):

for line in file_to_use: 
    if re.search ("LEAD", line): 
     break 
    else: 
     print line 

Но, конечно, просто выпадает из цикла, когда он достигает первый экземпляр "ВЕСТИ". Есть ли способ заставить его искать следующую цель («Редактору:») и повторить процесс оттуда?

Благодарим за помощь.

EDIT:

Спасибо за редактирование моего оригинального поста!

Вот пример документа:

01.tgz:

Для редактора: Я согласен с г-ном Чизвике на желательности иммиграционную политику, которая способствует претендентов на иммиграцию, которые, скорее всего, чтобы быть продуктивным членов американского общества. Однако, я думаю, г-н Чизвик ошибается, когда он приравнивает образовательный уровень заявителя к его вероятной производительности. Я сомневаюсь, что можно установить, что уровень образования иностранного рабочего скорее всего будет коррелировать с его продуктивностью, выходящей за минимальный уровень.

01.tgz:

Наш опыт работы с мексиканскими рабочими в мексиканской производственной и сборочной отраслях мексиканской связи заключается в том, что те работники, которые имеют образование в шестом классе, в среднем составляют от 10 до 25 процентов более продуктивно чем работники Соединенных Штатов (которые, по-видимому, лучше образованы) при выполнении одних и тех же задач. Напротив, университетское или колледжное образование во многих зарубежных странах, по-видимому, прямо коррелирует с полезными производительными навыками. ALLEN E. SMITH Allen E. Smith & Associates Maquiladora отраслевые консультанты McAllen, Tex., Декабрь 29 КОРПОРАТИВНАЯ ВЛАСТЬ, CONT.

01.tgz:

ЛИДЕР: Известный судья округов штата Мэн сталкивается со своим вторым обвинением в неправомерном поведении в должности через два года, вытекающим из его политики жестокого обращения с пьяными водителями и несовершеннолетними правонарушителями.

01.tgz:

ЛИДЕР: Известный судья округов штата Мэн сталкивается со своим вторым обвинением в неправомерном поведении в должности через два года, вытекающим из его политики жестокого обращения с пьяными водителями и несовершеннолетними правонарушителями.

01.tgz:

Три другие судьи Мэн были признаны виновными в совершении проступка со стороны Верховного суда штата в течение последних восьми лет, но г-н Benoit является единственным судьей, чтобы идти в суд дважды.

01.tgz:

«Мы возмущены тем, что с ним делают», - сказала Джоан Паттерсон, которая с мужем управляет ветеринарным бизнесом в Фармингтоне.«Любой, кто пытается сделать что-то другое, чтобы сделать что-то лучше, получает флак». Ленты в качестве показа поддержки

01.tgz:

В рождественские каникулы миссис Паттерсон передала 5 200 красных лент для людей, чтобы связать на автомобилях, чтобы показать поддержку судье Бенуа.

01.tgz:

«Одна женщина сказала мне, что судья Бенуа спас семью мужа семь лет назад, предложив ему суровое наказание», - сказала миссис Паттерсон. «Большинство людей очень поддерживают то, что он делает».

+0

У вас есть входной/выходной пример? Мне было непонятно, что именно вы хотите. –

+0

Благодарим за редактирование. – user3925296

+0

Я думаю, вы хотите продолжать цикл. затем используйте 'continue' вместо' break' – han058

ответ

0

Один из способов сделать это может заключаться в том, чтобы «выключить» выход, когда ваш код видит «ведущий», и снова включайте его, когда он видит "Кому редакции:"

lead = False 

for line in file_to_use: 
    if re.search ("LEAD", line): 
     lead = True 
    if re.search ("To the Editor:", line): 
     lead = False 

    if lead == False: 
     print line 
+0

Это работает! Ты замечательный. Огромное спасибо. – user3925296

0

Если я понимаю цели, попробуйте многострочный регулярное выражение:

re.findall(r'^(?:To the Editor:)(.*?)(?=^LEAD:)', txt, re.S | re.M) 

Live Demo

+0

Большое спасибо! Я тоже попробую! – user3925296