2. Коды телефонов 2.
Условие:
Программа должна открыть файл "Сложный_список_телефонов.txt", найти в нём коды телефонов и вывести их на экран без повторов.
⇒ Сложный список телефонов
Код:
import re
# функция достаёт элемент (код города) из кортежа
def my_def(i):
return [a for a in i if a != ""][0]
buf = open("./Сложный_список_телефонов.txt", "r")
s = buf.read()
regex_obj = re.compile(r"""\s\((\d{3})\) # составим регулярное выражение для поиска кода в телефоне вида: " (999)"
| \s[\d]{1}([\d]{3})[\d]{7} # составим регулярное выражение для поиска кода в телефоне вида: " 79005552543"
| [78]\s([\d]{3})\s # составим регулярное выражение для поиска кода в телефоне вида: "8 916 "
| \+[78]\-([\d]{3}) # составим регулярное выражение для поиска кода в телефоне вида: "+7-499"
| [78]\-([\d]{3})\- # составим регулярное выражение для поиска кода в телефоне вида: "7-960-"
| \'[78]([\d]{3}) # составим регулярное выражение для поиска кода в телефоне вида: "'7916"
| \+[78]([\d]{3})\d{7} # составим регулярное выражение для поиска кода в телефоне вида: "+7915"
""", re.VERBOSE)
x = regex_obj.findall(s) # список кодов городов всех телефонов, получился список кортежей вида [('999', '', ''), ('', '', '031'), ('', '900', '')]
x = {my_def(i) for i in x} # убирает повторы городов
print()
print(f"Коды телефонов: {x}.")
print()