Вывести все предложения в тексте с четным количеством слов
Работа с текстом / подсказка к 3 задачке
Что вывести все предложения в тексте, надо сначала научиться разбивать текст на предложения. Тут опять нам на помощь придут регулярные выражения.
Условно если текст простой, то каждое предложение в нем оканчивается на точку. Попробуем разбить так
import re
text = """
- Бедные мои ножки!
Кто же вас будет теперь обувать?
Кто натянет на вас чулки и башмаки?
Мне же до вас теперь, мои милые, не достать.
Мы будем так далеки друг от друга, что мне будет совсем не до вас...
Придется вам обходиться без меня.
"""
sentences = re.split(".", text)
print(sentences)
выдаст это очень странный результат:
['\n', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '\n', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '\n', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '\n', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '\n', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '\n', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '\n']
дело в том, что в регулярных выражениях точка означает любой символ. А если хочется прямо настоящую точку, то ее надо обернуть в квадратные скобки вот так
sentences = re.split("[.]", text)
print(sentences)
в квадратных скобках можно прямо перечислять символы, которые мы хотим использовать для разбиения. Получится так:
[
'\n- Бедные мои ножки! \nКто же вас будет теперь обувать? \nКто натянет на вас чулки и башмаки? \nМне же до вас теперь, мои милые, не достать',
' \nМы будем так далеки друг от друга, что мне будет совсем не до вас',
'',
'',
' \nПридется вам обходиться без меня', '\n'
]
уже лучше, правда первое предложение получилось склейкой из предложений с восклицательными и вопросительными знаками.
Помните я говорил что в квадратных скобках можно перечислять символы, так что просто добавим туда ! и ?
sentences = re.split("[.!?]", text)
print(sentences)
проверяем:
[
'\n- Бедные мои ножки',
' \nКто же вас будет теперь обувать',
' \nКто натянет на вас чулки и башмаки',
' \nМне же до вас теперь, мои милые, не достать',
' \nМы будем так далеки друг от друга, что мне будет совсем не до вас',
'',
'',
' \nПридется вам обходиться без меня',
'\n'
]
ура, то что надо! =)
Теперь чтобы вывести предложения с четным количеством слов вам надо
- в цикле пройти по всем sentences,
- каждое предложение разбивать на слова и сохранять в переменную
- если количество элементов при делении на 2 даст остаток 0 значит в предложении четное количество слов и можно его выводить