Pretty easy with regular expressions:
>>> import re
>>> s = "Hans went to house number 10 92384 29349"
>>> re.split(r'\s+(?=\d+\b)', s)
['Hans went to house number', '10', '92384', '29349']
That said your question is confusing, if you want to add the | char to the output, simply join the output again:
>>> ' | '.join(_)
'Hans went to house number | 10 | 92384 | 29349'
If your goal is to implement a function that does the trick, you can write this:
def split_numbers(string, join=None):
from re import split
split = re.split(r'\s+(?=\d+\b)', string)
return join.join(split) if join else split
Notice that I added the word boundary \b on my regex to avoid matching words starting with a number like the 2cups in the sentence Hans went to house number 10 92384 29349 and drank 2cups of coffee