re.sub
продолжает заменять часть строки, которая еще не совпала, пока не достигнет счетчика или конца строки, затем он вернет оставшуюся строку.
Также ваш шаблон может соответствовать нулевым символам.
>>> pattern = re.compile(r'\s*(.*?)\s*')
>>> re.sub(pattern, r"\1", ' foo bar ' , count=1)
'foobar '
>>> re.sub(pattern, r"\1", 'foobar ' , count=1)
'foobar'
>>> re.sub(pattern, r"\1", ' foo bar ' )
'foobar'
Если это соответствует вашим потребностям, вы можете упростить свое регулярное выражение.
>>> re.sub(r"\s*", r"", ' foo bar ' )
'foobar'
Если вы хотите заменить только пробел в конце строки, используйте следующее.
>>> re.sub(r"^\s*|\s*$", r"", ' foo bar ' )
'foo bar'