Понимание списка здесь является довольно кратким:
a = 'I 0.34 -345 3/4 3% want to get -0.34 2018-09 all numbers'
pattern = re.compile('\d')
result = ['_num' if re.search(pattern, word) else word for word in re.compile(' +').split(a)]
Если в вашем вводе двойной пробел (want to get
) был опечаткой, то вы можете разделить только пробел вместо использования регулярного выражения:
pattern = re.compile('\d')
result = ['_num' if re.search(pattern, word) else word for word in a.split(' ')]
Результат:
['I', '_num', '_num', '_num', '_num', 'want', 'to', 'get', '_num', '_num', 'all', 'numbers']