python - Список после фильтра слепил элементы


0

Задачка была такая, что подается на вход строка (N=str(input())) Строка содержит буквы и символы (ваще рандом) и надо, во-первых, убрать все символы и буквы (чтобы цифры остались) и после нужно убрать все повторяющийся цифры, расположить их в порядке убывания (чтобы получилось наибольшее число) Все было бы просто,если бы не то,что через вот этот код:

import re
a=str(input(Введите текст : ))
print(list(filter(None, re.split(rD, a))))

Пример ввода: 234привет456.
Пример вывода: [234,456]

Таким образом мой желаемый вывод на данном этапе это все цифры по отдельности, а итоговый вывод для ввода таков: 65432! В питоне новичок, начал переходить с паскаля, а экзамен уже скоро...

Источник
  •  1117
  •  2
  • 22 янв 2019 2019-01-22 06:29:24

2 ответа

1

Попробуйте:

import re

text = input(Введите текст: )
items = sorted(set(map(int, re.findall(rd, text))), reverse=True)
print(items)

Еще вариант без регулярки через функциональный стиль:

text = input(Введите текст: )
items = sorted(set(map(int, filter(str.isdigit, text))), reverse=True)
print(items)
  • filter переберет каждый символ строки, оставив только цифры
  • map цифры-строки переведет в int
  • set приведет результат в множество, удалив дубликаты
  • sorted отсортирует по убыванию
  • 22 янв 2019 2019-01-22 07:19:45
@ОлегСоколовский, поправил — 22 янв 20192019-01-22 06:50:19.000000
Так же склеивает числа,то есть из строки: аб5как56решить78 он выдаст ЧИСЛА,не цифры в порядке убывания: [78, 56, 5] . а хотелось бы какой-то такой вывод [8,7,6,5] — 22 янв 20192019-01-22 06:48:44.000000
1

Не нужны тут регулярные выражения, если я правильно понял задание

print(*sorted({int(c) for c in input(Введите текст: ) if c.isnumeric()}, reverse=True))