Как убрать знаки препинания в тексте что бы проверить его на палиндром?
Ввести с клавиатуры строку и определить является ли она полиндромом. Учесть что символы знаков припинания и разделения текста не учитываются при поиске полиндрома, учитываются только буквы и цифры. Причем ручной выбор символов будет низко оценен!
str_1 = input()
print(f" {str_1} is Polindrom" if str_1 == str_1[::-1] else f" {str_1} is NOTT Polindrom")
Условий вроде никаких нет кроме того что ручной выбор символов будет низко оценен
Кони, топот, инок,
Но не речь, а черен он.
Идем, молод, долом меди.
Чин зван мечем навзничь.
Голод, чем меч долог?
Пал, а норов худ и дух ворона лап.
А что? Я лав? Воля отча!
Яд, яд, дядя!
Иди, иди!
Мороз в узел, лезу взором
Солов зов, воз волос.
Колесо. Жалко поклаж. Оселок.
Сани, плот и воз, зов и толп и нас.
Горд дох, ход дрог.
И лежу. — Ужели?
Зол, гол лог лоз.
И к вам и трем с смерти мавки.
Ответы (1 шт):
Ну можно использовать регулярные выражения:
line = "Горд дох, ход дрог.\nИ лежу. — Ужели?"
import re
line = re.sub('[!@#$\n-.,]', '', line)
проверка на палиндром после преобразований делается так:
print("палиндром" if line == line[::-1] else "не палиндром")
вот только в строке все буквы надо привести или к верхнему или к нижнему регистру:
line = line.upper()
P.S.
полный код:
import re
# удалить символы
line = re.sub('[!@#$\n-.,]', '', line)
# перевести строку в верхний регистр (чтобы все буквы были одинаковыми и не было ситуации с буквами "A"/"a"
line = line.upper()
# проверить строку на палиндром
print("палиндром" if line == line[::-1] else "не палиндром")
чтобы не перечислять запрещённые символы [!@#$\n-.,], лучше написать регулярку по удалению всех символов кроме букв - [a-я,А-Я]
P.P.S.
непонятное условие "ручной выбор символов будет низко оценен"
потому что иначе можно использовать метод replace для удаления ненужных символов:
line = line.replace('!', '')
line = line.replace('-', '')
и т.д.