Нахождение чисел в строке

Нужно написать программу в которою юзер будет вводить символы и если там будут числа, то программа выведет их. Я, приблизительно, в курсе что нужно создать строку А из чисел от 0 до 9. Перебирать все символы входной строки и искать их вхождение в строке А. Если есть то печатать. Но как это реализовать без понятия :((


Ответы (3 шт):

Автор решения: Акмаль
nums = [0,1,2,3,4,5,6,7,8,9]
text = input('введите текст: ')

for num in nums:
    if str(num) in text:
        print(num)
→ Ссылка
Автор решения: DGDays

Есть более лёгкий способ:

text = input('введите текст: ')
    
for symbol in text:
    if str(symbol).isdigit():
        print(symbol)

Чуть меньше кода и никаких массивов + выводит все цифры, а в коде выше, если есть 2 и более повторяющихся цифр, то выведет только одну.

→ Ссылка
Автор решения: Stanislav Volodarskiy

Если вы хотите получить числа как числа - кучками, а не по отдельности, то удобно использовать регулярное выражение. re.split(r'\D+', text) возвращает цифры сгруппироваными.

re.split разбивает текст (второй параметр) на подстроки/слова/токены разделённые разделителем (первый параметр). \D соответствует любому символу кроме цифры. + означает что соответствие делается по одной и больше нецифре. Префикс r (raw) перед строкой выключает специальную интепретацию обратных слешей в строке. Можно было без него: r'\D+' == '\\D+', но с ним регулярные выражения читаются легче.

В конце и начале текста вы можете получить пустые группы. Их надо отфильтровать. if s проверяет строку на пустоту: if s <=> if len(s) > 0:

import re

text = 'abc123def456'

print([s for s in re.split(r'\D+', text) if s])

Результат:

['123', '456']

Это ещё не числа, но их уже не сложно будет пропустить через int.

→ Ссылка