Составить регулярное выражение для правильной расстановки знаков препинания

Задание такое:

Исправьте строку в соответствии с правилом расстановки знаков препинания (точка, запятая, тире, точка с запятой, двоеточие, многоточие, круглые, квадратные и фигурные скобки): перед каждым знаком препинания (кроме тире и открывающихся скобок) пробел отсутствует, а после любого знака препинания (кроме открывающихся скобок) стоит ровно один пробел; в многоточии между точками пробелы отсутствуют.

Сделал тремя выражениями:

string = re.sub(r'\s*([:.,?})\]-])\s*', '\g<1>' + ' ', string)
string = re.sub(r'\s*\.\s*\.\s*\.\s*', '... ', string)
string = re.sub(r'\s*([{(\[])\s*', ' ' + '\g<1>', string)

Думаю, что это не самый оптимальный вариант, хотелось бы проще.


Ответы (0 шт):