Помогите с регулярными выражениями
import re
def sanitize_phone_number(phone):
phone = [re.sub('\D', '', digit)
for digit in [phone_number
for phone_number in phone]] # тут пробовал добавить if digit.isdigit()
print(phone)
return phone
uneditted_numbers = ['', '', '', '', '', '3', '8', '', '0', '5', '0', '', '1', '2', '3', '', '3', '2', '', '3', '4']
sanitize_phone_number(uneditted_numbers)
Я уже сделал шаблон для ввода1:
" +38(050)123-32-34 ",
" 0503451234",
" ( 050 )8889900",
"38050-111-22-22",
"38050 111 22 11 "
Но моя программа не может справится с вводом в примере. Как мне вывести целый номер без пропусков одним элементом? Уже несколько часов не могу найти решения. Если добавляю digit.isdigit() для ввода в коде, то при ввод1 уже выводит пустые списки...
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Пример:
import re
def sanitize_phone_number(phone: str) -> str:
return re.sub(r'\D', '', phone)
items = [
" +38(050)123-32-34 ", " 0503451234", " ( 050 )8889900", "38050-111-22-22", "38050 111 22 11 ",
"'', '', '', '', '', '3', '8', '', '0', '5', '0', '', '1', '2', '3', '', '3', '2', '', '3', '4'"
]
for phone in items:
new_phone = sanitize_phone_number(phone)
print(f'{phone!r} -> {new_phone!r}')
Результат:
' +38(050)123-32-34 ' -> '380501233234'
' 0503451234' -> '0503451234'
' ( 050 )8889900' -> '0508889900'
'38050-111-22-22' -> '380501112222'
'38050 111 22 11 ' -> '380501112211'
"'', '', '', '', '', '3', '8', '', '0', '5', '0', '', '1', '2', '3', '', '3', '2', '', '3', '4'" -> '380501233234'