Как отфильтровать все номера в тексте?
Есть такая таблица:
Unnamed: 5
2550 +380639231808, Зеркло Мария Орестовна
2551 раролджєжопа, Кролик Вера Герасимовна
2552 063-070-99-48, Марийчук Надежда Иосифовна
2553 063 076 66 68, Марийчук Надежда Иосифовна
2554 (097)5455793 Слуцький Т., Надежны Тарас Олегович
Задача состоит в том, чтобы записать в список только номера в формате 0999999999. Я так понимаю, что это делается через регулярные выражения, но я смог только вывести все цифры.
Мой код такой:
for i in range(0, 5):
line_number = 2550 + i
line_content = str(sheet_1.iloc[[line_number], [5]])
res = re.sub('[^\d]', '', line_content)
print(res)
В итоге нужно получить список, где все номера в едином формате:
phones = ['0639231808', '0630709948', '0630766668', '0975455793']
Ответы (1 шт):
Автор решения: NykSu
→ Ссылка
txt = """ Unnamed: 5
2550 +380639231808, Зеркло Мария Орестовна
2551 раролджєжопа, Кролик Вера Герасимовна
2552 063-070-99-48, Марийчук Надежда Иосифовна
2553 063 076 66 68, Марийчук Надежда Иосифовна
2554 (097)5455793 Слуцький Т., Надежны Тарас Олегович"""
tel = []
rr = r"(\d{10,})|(\d+\){1}\d+)|(([ -]{1}\d{2,3}[ -]{1}\d{2,3}){2})"
res = re.findall(rr, txt)
for gr in res:
for st in gr:
if len(st) >= 10:
st = re.sub('[^\d]', '', st)
if len(st) > 10:
st = st[-10:len(st):]
tel.append(st)
print(tel)
['0639231808', '0630709948', '0630766668', '0975455793']
Может слегка громоздко, зато работает.