Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16

Форматирование номера телефона

17.11.2019, 12:56. Показов 7087. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задача

"Привет, если ты знаешь номер может быть написан по-разному, т. 8915 12 - 34 - 567 вот так, например номер + 7(915)123 - 45-67 может писаться, и так + 7978123456779787654321 где 79787654321 тоже номер, но какой-то рукооп написал их слитно, и теперь надо разделять... и нужно систему научить разделять их 12345 просто цифры, их учитывать не стоит, а тебе нужен номер где точно встречается 8 или 7 потом код потом 7 циферок номера "

достать из строки все номера телефонов

0_о

Добавлено через 16 минут
Вот так

Python
1
2
3
4
5
6
7
8
import re
 
text = "Привет, если ты знаешь номер может быть написан по-разному, т. 8915 12 - 34 - 567 вот так, например номер + 7(915)123 - 45-67 может писаться, и так + 7978123456779787654321 где 79787654321 тоже номер, но какой-то рукооп написал их слитно, и теперь надо разделять... и нужно систему научить разделять их 12345 просто цифры, их учитывать не стоит, а тебе нужен номер где точно встречается 8 или 7 потом код потом 7 цифер номера "
 
 
text = text.replace(' ', '').replace('-', '').replace('(', '').replace(')', '').replace('+', '')
text = re.findall('\d+', text)
print(text)
['89151234567', '79151234567', '7978123456779787654321', '79787654321', '12345', '8', '7', '7']

Добавлено через 13 минут
теперь их надо отсортировать
и "длинные" разделить

Добавлено через 7 минут
Короче )

получилось =))

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import re
 
text = "Привет, если ты знаешь номер может быть написан по-разному, т. 8915 12 - 34 - 567 вот так, например номер + 7(915)123 - 45-67 может писаться, и так + 7978123456779787654321 где 79787654321 тоже номер, но какой-то рукооп написал их слитно, и теперь надо разделять... и нужно систему научить разделять их 12345 просто цифры, их учитывать не стоит, а тебе нужен номер где точно встречается 8 или 7 потом код потом 7 цифер номера "
 
 
text = text.replace(' ', '').replace('-', '').replace('(', '').replace(')', '').replace('+', '')
text = re.findall('\d+', text)
print(text)
 
for x in text:
    print(len(x))
    if len(x) >= 11:
        x = [x[i:i + 11] for i in range(0, len(x), 11)]
        print(x)
Добавлено через 4 минуты
Может можно это как-то сократить?

Добавлено через 15 секунд
Может можно это как-то сократить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.11.2019, 12:56
Ответы с готовыми решениями:

Форматирование семи чисел подряд как номера телефона
Если отправить в бота сообщение содержащее 7 чисел подряд, то API Telegram выведет эти числа как ссылку на телефон. Есть ли какой нибудь...

Задача про номера телефона
Помогите переписать программу с использованием исключений в таком стиле: идет преобразование данных к формату вывода исходя из того, что...

Поиск номера телефона с библиотеки bs4
Всем доброго времени суток. Пытаюсь узнать номер телефона с olx.uz Телефон выглядит так - хххххххххххх. При нажатии, появляются цифры. ...

2
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
23.11.2019, 08:50
Цитата Сообщение от IRIP Посмотреть сообщение
Может можно это как-то сократить?
Можно:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import re
 
text = '''\
Привет, если ты знаешь номер может быть написан по-разному,
т. 8915 12 - 34 - 567 вот так, например
номер + 7(915)123 - 45-67 может писаться, и
так + 7978123456779787654321 где
79787654321 тоже номер, но какой-то рукооп написал их слитно,
и теперь надо разделять... и нужно систему научить разделять и
х 12345 просто цифры, их учитывать не стоит, а тебе нужен номер
где точно встречается 8 или 7 потом код потом 7 цифер номера'''
 
dig = r'[\s-]*(\d)' * 6
for i in re.findall(r'([78])[\s\(]*(\d{3})[\s\)]*(\d)' + dig, text):
    print(''.join(i))
Code
1
2
3
4
5
89151234567
79151234567
79781234567
79787654321
79787654321
1
1 / 1 / 1
Регистрация: 30.05.2014
Сообщений: 35
26.11.2019, 10:28
Я в своей работе использую следующий код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def search_nomera(text_abzac):
    text_abzac_new = text_abzac
    sp_nomera_class = []
    nomera_txt = []
    while 1:
        buf_nomer = re.search(r'(\+)?(\(\d{2,3}\) ?\d|\d)(([ \-]?\d)|( ?\(\d{2,3}\) ?)){5,12}\d', text_abzac_new)
        if buf_nomer is not None:
            span_nomera = buf_nomer.span()
            text_nomera = buf_nomer.group()
            text_nomera = re.sub(r"\D", "", text_nomera)
            nomera_txt.append(text_nomera)
            text_abzac_new = text_abzac_new[span_nomera[1]:]
        else:
            break
    for tek_nomer_txt in nomera_txt:
        sp_nomera_class.append(SP_TELEPHONS(tek_nomer_txt))
    return sp_nomera_class
В принципе, получаю более менее годные результаты
Кстати, при использовании этой регулярки в моем примере findall работает как то не корректно, поэтому использую танцы с бубном
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.11.2019, 10:28
Помогаю со студенческими работами здесь

Работа с файлами, нахождение номера телефона
2. Создать функцию, переносящую из файла1 в файл2 только номера телефонов. Номером телефона считается: Последовательность цифр и дефисов,...

Regexp выделить все кроме, номера телефона
Подскажите, как выделить при помощи выражения regexp все, кроме номера телефона в строке: индекс 1123456 г. Москва ул. 10-летия Октября...

Насчет телефона и определения номера / Телефония, офисные АТС
Нужно сделать так чтобы при поступлении звонка на телефон номер записывался на компьютер, телефон подключен к модему, можно сделать?

Форматирование номера телефона
Всем привет! Ребята, помогите пожалуйста с составлением запроса. В поле pole таблицы table содержатся номера телефонов вида 8 (999)...

Автоматическое форматирование номера телефона
Помогите решить задачу Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод input.txt Вывод output.txt


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru