Используйте
s = re.sub(r' \d+ ', '\n\\g<0>\n', s)
См. Демоверсию regex .
Чтобы заменить только отдельные числа как целые слова, используйте
s = re.sub(r'\b\d+\b', '\n\\g<0>\n', s)
Если вы хотите сопоставить числа, заключенные в пробелы, используйте только один из
re.sub(r'(?<!\S)\d+(?!\S)', '\n\\g<0>\n', s) # also at the start/end of string
re.sub(r'(?<=\s)\d+(?=\s)', '\n\\g<0>\n', s) # only between whitespaces
На самом деле, замена может быть указана как '\n\g<0>\n'
, так как \g
является неопределенной escape-последовательностью, и обратная косая черта в этом случае будет обрабатываться как литерал char и будет сохраняться в результирующей строке для формирования конструкции обратной ссылки регулярного выражения .
Демо Python :
import re
s = "bla bla 1 bla bla bla 142 bla bla"
s = re.sub(r'\b\d+\b', '\n\\g<0>\n', s)
print(s) # => bla bla \n1\n bla bla bla \n142\n bla bla