Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 18, 2015 21:26:08

deep-north
Зарегистрирован: 2015-05-04
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск в тексте по ключевым словам.

Доброго времени суток.
Очень нужна помощь.

Решаю задачу.

Есть текст. В нем нужно найти кусок начинающийся на ключевую фразу и заканчивающийся ДО следующей ключевой фразы.

Пример:
Привет!
Как дела? Чем занимаешься?
У меня все хорошо.
Тут еще всякий текст.
И еще раз всякий текст.
А теперь будет окончание текста.

Из этого примера нужен кусок:
Как дела? Чем занимаешься?
У меня все хорошо.
Тут еще всякий текст.
И еще раз всякий текст.

Ключевые фразы для него: “Как дела?” и “А теперь будет окончание текста.”
Т.е. просто отрезать первую строчку и последнюю нельзя.

Код такой:

import re

ss = '''Привет!
Как дела? Чем занимаешься?
У меня все хорошо.
Тут еще всякий текст.
И еще раз всякий текст.
А теперь будет окончание текста.'''

print (re.findall(ur'Как дела.*?\n(.*)\sА теперь будет окончание текста', ss, re.DOTALL+re.I+re.U))

Только он у меня не выводит то, что хочется.

Отредактировано deep-north (Июнь 18, 2015 21:26:47)

Офлайн

#2 Июнь 18, 2015 21:33:30

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Поиск в тексте по ключевым словам.

>>> s = """Привет!
... Как дела? Чем занимаешься?
... У меня все хорошо.
... Тут еще всякий текст.
... И еще раз всякий текст.
... А теперь будет окончание текста."""
>>> start = "Как дела? Чем занимаешься?"
>>> end = "А теперь будет окончание текста."
>>> print(s[s.index(start): s.index(end) + len(end)])
Как дела? Чем занимаешься?
У меня все хорошо.
Тут еще всякий текст.
И еще раз всякий текст.
А теперь будет окончание текста.



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Июнь 18, 2015 23:20:28

deep-north
Зарегистрирован: 2015-05-04
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск в тексте по ключевым словам.

Спасибо, но это не совсем то.
Мне нужно, чтобы фраза end (т.е. А теперь будет окончание текста) не выводилась.
Но решение мне понравилось.

Отредактировано deep-north (Июнь 18, 2015 23:23:03)

Офлайн

#4 Июнь 18, 2015 23:27:18

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Поиск в тексте по ключевым словам.

deep-north
Мне нужно, чтобы фраза end (т.е. А теперь будет окончание текста) не выводилась.
print(s[s.index(start): s.index(end)])



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Июнь 18, 2015 23:28:13

deep-north
Зарегистрирован: 2015-05-04
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск в тексте по ключевым словам.

Придумал костыль )))

start = "Чем занимаешься?"
end = "А теперь будет окончание текста."
z=''
print(s[s.index(start): s.index(end) + len(z)])

Офлайн

#6 Июнь 18, 2015 23:29:34

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Поиск в тексте по ключевым словам.

deep-north
Придумал костыль )))
ахах
выше посмотрите
и книгу почитайте!



————————————————
-*- Simple is better than complex -*-

Офлайн

#7 Июнь 18, 2015 23:29:51

deep-north
Зарегистрирован: 2015-05-04
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск в тексте по ключевым словам.

Спасибо!
Не увидел сообщения )))

Отредактировано deep-north (Июнь 18, 2015 23:30:15)

Офлайн

#8 Июнь 18, 2015 23:39:53

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Поиск в тексте по ключевым словам.

Через регекспы.

>>> import re
>>> 
>>> text = """
... Привет!
... Как дела? Чем занимаешься?
... У меня все хорошо.
... Тут еще всякий текст.
... И еще раз всякий текст.
... А теперь будет окончание текста.
... """
>>> 
>>> pat = r'Привет!\n(.*)А теперь будет окончание текста.'
>>> 
>>> out = re.search(pat, text, re.S).group(1)
>>> print(out, end='')
Как дела? Чем занимаешься?
У меня все хорошо.
Тут еще всякий текст.
И еще раз всякий текст.
>>>



Офлайн

#9 Июнь 18, 2015 23:42:29

deep-north
Зарегистрирован: 2015-05-04
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск в тексте по ключевым словам.

Спасибо!

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version