Мой код должен очищать пробелы вокруг скобок любого типа, поэтому я предполагаю, что использование регулярных выражений — мой лучший способ действий. Мои строки (я думаю) всегда будут выглядеть следующим образом (хотя всегда приветствуется большая надежность):
text = "the people ( that don't still like / love you } are going to ..."
выглядеть как:
final = "the people (that don't still like / love you} are going to ..."
Моя текущая попытка, кажется, ничего не делает (я знаю, что пока она рассматривает только круглые скобки):
final = re.sub( r'\s[\(]+\s(\w*)\s[\)]+\s' , '\s[\(]+\1[\)]+\s' , text )
Пожалуйста, спасибо.
Может re.sub(r'(?<=[{[(])\s+|\s+(?=[]})])', '', text)? См. regex101.com/r/iQl5Oo/1
Если это должно быть от типа открывающей скобки к типу закрывающей скобки ([{[(])\s*(.*?)\s*([]})])regex101.com/r/7i3VNM/1
Используется аналогично @WiktorStribiżew, но с использованием группы захвата re.sub(r'([({[])\s+|\s+([)}]])', r'\g<1>\g<2>', text)
Ответы намного быстрее, чем я ожидал, спасибо всем






В строке вашего примера вы хотите удалить пробелы после открытия и перед закрывающей скобкой для разных типов скобок.
Шаблон, который вы пробовали, не работает, так как между ( и ) есть несколько слов, и вы не соответствуете }
Обратите внимание, что в классе символов вам не нужно экранировать скобки.
([{[(])\s*(.*?)\s*([]})])
Объяснение
([{[(]) Группа захвата 1 соответствует любой из перечисленных скобок.\s* Совпадение 0+ пробельных символов(.*?) Захватите группу 2, сопоставьте любой символ, как можно меньше\s* Совпадение 0+ пробельных символов([]})]) Группа захвата 3 соответствует любой из перечисленных скобок.Посмотрите демонстрацию регулярных выражений
Замените на 3 группы захвата.
\1\2\3
Я принял это за лучшее объяснение. Спасибо.
Вы не сопоставляете пробелы и
}