Advertisement
bal_gennady

Ищет в буфере обмена номера телефонов и адреса эл.почты

Aug 16th, 2020
1,409
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.39 KB | None | 0 0
  1. # Ищет в буфере обмена номера телефонов и адреса эл.почты
  2.  
  3. # импортируем модули pyperclip (работа с буфером обмена)
  4. # и re (работа с регулярными выражениями)
  5. import pyperclip, re
  6.  
  7. # регулярное выражение для номера телефона
  8. phoneRegex = re.compile('''(
  9.    (?:\(?(\d{3})\)?)?             # код города
  10.    (?:\s|-)?                      # разделитель
  11.    (\d{3})                        # первые три цифры
  12.    (?:\s|-)?                      # разделитель
  13.    (\d{2})                        # еще две цифры
  14.    (?:\s|-)?                      # разделитель
  15.    (\d{2})                        # еще две цифры
  16.    (?:\s*доб[.а-я]*\s*(\d{2,5}))? # добавочный
  17.    )''', re.VERBOSE)
  18.  
  19. # регулярное выражение для адреса эл.почты
  20. emailRegex = re.compile('''
  21.    [a-z0-9._-]+     # имя пользователя
  22.    @                # @
  23.    [a-z0-9.-]+      # первая часть домена
  24.    \.[a-z]{2,6}     # вторая часть домена
  25.    ''', re.VERBOSE | re.IGNORECASE)
  26.  
  27. # получить содержимое буфера обмена
  28. text = str(pyperclip.paste())
  29.  
  30. # список для хранения найденных номеров
  31. # телефонов и адресов эл.почты
  32. matches = []
  33.  
  34. # цикл по найденным номерам телефонов
  35. for groups in phoneRegex.findall(text):
  36.     phoneNum = '+7 (' + groups[1] + ') ' + groups[2] + '-' + groups[3] + '-' + groups[4]
  37.     if groups[5] != '':
  38.         phoneNum += ' доб.' + groups[5]
  39.     # пропускаем дубли
  40.     if phoneNum not in matches:
  41.         matches.append(phoneNum)
  42.  
  43. # цикл по найденным адресам эл.почты
  44. for groups in emailRegex.findall(text):
  45.     if groups not in matches:
  46.         # пропускаем дубли
  47.         matches.append(groups)
  48.  
  49. # копируем результат в буфер обмена
  50. if len(matches) > 0:
  51.     pyperclip.copy('\n'.join(matches))
  52.     print('Скопировано в буфер обмена:')
  53.     print('\n'.join(matches))
  54. else:
  55.     print('Телефонные номера и адреса почты не найдены.')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement