Python:Примеры/Поиск телефонных номеров и адресов электронной почты в буфере обмена: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{Python/Панель перехода}} {{Myagkij-редактор}} =Поиск телефонных номеров и адресов электронной…»)
 
Нет описания правки
Строка 62: Строка 62:
|Описание статьи=
|Описание статьи=
|Изображение статьи для Open Graph=
|Изображение статьи для Open Graph=
|Адрес страницы для schemaNewsArticle=<nowiki>http://wikihandbk.com/wiki/Поиск телефонных номеров и адресов электронной почты в буфере обмена</nowiki>
|Адрес страницы для schemaNewsArticle=<nowiki>http://wikihandbk.com/wiki/Python:Примеры/Поиск телефонных номеров и адресов электронной почты в буфере обмена</nowiki>
|Изображение статьи для schemaNewsArticle=<nowiki></nowiki>
|Изображение статьи для schemaNewsArticle=<nowiki></nowiki>
|Высота изображения статьи для schemaNewsArticle=
|Высота изображения статьи для schemaNewsArticle=

Версия от 15:15, 19 января 2020

Проверка/Оформление/Редактирование: Мякишев Е.А.


Поиск телефонных номеров и адресов электронной почты в буфере обмена

Код

import pyperclip, re

# Создание регулярного выражения для номеров телефонов
phoneRegex = re.compile(r'''(
    (\d{3}|\(\d{3}\))? # территориальный код
    (\s|-|\.)?         # разделить
    (\d{3})              # первый 3 цифры
    (\s|-|\.)          # разделить
    (\d{4})              # последние 4 цифры
    (\s*(ext|x|ext.)\s*(\d{2,5}))?  # добавочный номер
    )''', re.VERBOSE)

# Создание регулярного выражения для адресов электронной почты
emailRegex = re.compile(r'''(
    [a-zA-Z0-9._%+-]+      # имя пользователя
    @                      # символ @
    [a-zA-Z0-9.-]+         # имя домена
    (\.[a-zA-Z]{2,4}){1,2} # остальная часть
    )''', re.VERBOSE)

# Поиск соответствий в тексте, содержащемся в буфере обмена
text = str(pyperclip.paste())

matches = []
for groups in phoneRegex.findall(text):
    phoneNum = '-'.join([groups[1], groups[3], groups[5]])
    if groups[8] != '':
        phoneNum += ' x' + groups[8]
    matches.append(phoneNum)
for groups in emailRegex.findall(text):
    matches.append(groups[0])

# Копирование результатов в буфер обмена
if len(matches) > 0:
    pyperclip.copy('\n'.join(matches))
    print('Скопировано в буфере обмена:')
    print('\n'.join(matches))
else:
    print('Телефонные номера и адреса электронной почты не обнаружены.')

См.также

Внешние ссылки