Это может помочь, используя группу захвата ваших цифр?
import re
x = "foobar123"
y = re.sub(r'(\d+)', r'_\1', x)
print(y)
Я избежал обратной косой черты, используя необработанную строку. Что-то, что вы забыли сделать в вашем =)
Забавная альтернатива без группы захвата - использовать count
параметр re.sub
:
import re
x = "foobar123"
y = re.sub(r'(?=\d)', '_', x, 1)
print(y)
Шаблон (?=\d)
возвращает все позиции, за которыми следует ди git, но только first (следовательно, 1 для count
) заменяется подчеркиванием.