1

Почему при выводе списка строк в номерах, которые начинаются с нуля, не выводятся сами нули?

import re

def sanitize_phone_number(phone): phone_numbers = [re.sub('\D', '', digi) for digi in [phone_number for phone_number in phone]] phone_numbers = [int(phone_number) for phone_number in phone_numbers] print(phone_numbers) return phone_numbers

phones = [" +38(050)123-32-34", " 0503451234", "(050)8889900", "38050-111-22-22", "38050 111 22 11 "] sanitize_phone_number(phones)

Проблема вроде в 7-ой строке. Подскажите, как её исправить?

strawdog
  • 25,888
Pain
  • 196

1 Answers1

2

Потому что в этой строке

phone_numbers = [int(phone_number) for phone_number in phone_numbers]

Вы из списка строк делаете список чисел типа int, этот тип данных не сохраняет ведущие нули.

Если просто закомментировать данную строку, то вывод будет с ведущими нулями:

['380501233234', '0503451234', '0508889900', '380501112222', '380501112211']
Павел
  • 4,518
  • Хорошо, спасибо, а как тогда я могу распаковать их? – Pain Dec 26 '22 at 02:08
  • 1
    @Pain что значит распаковать? У вас уже без этой строки в переменной phone_numbers находится список строк с телефонами – Павел Dec 26 '22 at 02:29
  • Они же в типе строки, а я хотел бы сделать список с чисел (int'овые) – Pain Dec 26 '22 at 02:35
  • 1
    @Pain а зачем? Стандартная практика номера телефонов хранить в виде строк, если всё таки хотите инты, то придётся отказаться от ведущих нулей – Павел Dec 26 '22 at 02:39