Python: замените два или более пробелов, за которыми следует указанный символ, одним пробелом, за которым следует этот символ

#python

Вопрос:

Как заменить два или более пробелов, за которыми следует указанный символ, одним пробелом, за которым следует этот символ, чтобы, например " amp;" , стать " amp;" . Я мог бы последовательно бежать

 str = str.replace("  amp;"," amp;")
 

но это происходит медленно.

Комментарии:

1. Итак, вы хотите просто заменить двойное пространство «»на»»? или просто когда он предшествует какому-либо символу, как @#! , например.

Ответ №1:

Используйте рефлекс

 import re
pattern = re.compile(r'  amp;')
string = '  amp;      amp;    h'
print(pattern.sub(' amp;', string))
 

Выход

  amp; amp;    h
 

Ответ №2:

замените один или несколько пробелов одним пробелом:

 import re
# match 1 or more spaces and then any non space character
pattern = re.compile(r'(s )([^s] )')
# replace with single space and keep second group
res = pattern.sub(r' 2', string)