Нахождение чисел в строке
Нужно написать программу в которою юзер будет вводить символы и если там будут числа, то программа выведет их. Я, приблизительно, в курсе что нужно создать строку А из чисел от 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)
Есть более лёгкий способ:
text = input('введите текст: ')
for symbol in text:
if str(symbol).isdigit():
print(symbol)
Чуть меньше кода и никаких массивов + выводит все цифры, а в коде выше, если есть 2 и более повторяющихся цифр, то выведет только одну.
Если вы хотите получить числа как числа - кучками, а не по отдельности, то удобно использовать регулярное выражение. 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.