Почему не удаляются слова между двумя разделителями в строчке с помощью регулярного выражения?
Почему не удаляются слова между двумя разделителями в строчке с помощью регулярного выражения?
import re
str = "Сэр (анг) — английский"
re.sub('(.+)', '', str)
print(str)
Ответы (3 шт):
Автор решения: Violet
→ Ссылка
как сказал MaxU:
string = "Сэр (анг) — английский"
print(re.sub(r'\(.+\)', '', string))
>>> Сэр — английский
ну и для красоты лишний пробел можно удалять:
string = "Сэр (анг) — английский"
print(re.sub(r'\(.+\)\s', '', string))
>>> Сэр — английский
Автор решения: CrazyElf
→ Ссылка
Акцентирую внимание автора вопроса на две другие ошибки, которые исправлены в предложенном ответе, но не озвучены:
- Не используйте зарезервированные слова Python в качестве названий переменных, у вас это
str. - Результат
re.subу вас не присвоен обратно в переменную, даже если бы замена сработала, вы бы её результат не увидели.
Автор решения: Wiktor Stribiżew
→ Ссылка
Используйте
import re
text = "Сэр (анг) — английский"
text = re.sub(r'\s*\([^()]*\)', '', text)
print(text) # => Сэр — английский
См. пример работы регулярного выражения и пример работы кода.
Подробности
\s*- ноль и более пробельных символов\(- символ([^()]*- ноль и более символов, отличных от(и)\)- символ)