diff --git a/exercises/ex07/ex07a.py b/exercises/ex07/ex07a.py new file mode 100644 index 0000000..46cb5c0 --- /dev/null +++ b/exercises/ex07/ex07a.py @@ -0,0 +1,42 @@ +import re +import pyperclip + +def to_int(string): + string = re.sub(r"\D", "", string) + if string: + return int(string) + else: + return None + +def rgx_phones(): + return re.compile( + r"((\+(\d+)\s*)?(([ |\d|\-|\.|\(|\)]){7,}\d)(\s+ext\S*\s+(\d+))?)", re.I + ) + +def rgx_emails(): + return re.compile(r"[\w\-]+@[\w\-]+\.\w{2,}", re.I) + +def parse_phone(phone): + lbraces = len(re.findall(r'.*\(.*', phone[0])) + rbraces = len(re.findall(r'.*\).*', phone[0])) + if lbraces == rbraces and re.match(r'^[\+|\d]', phone[0]): + code = to_int(phone[2]) + ext = to_int(phone[6]) + res = to_int(phone[3]) + res = to_int(phone[3]) + res = f"+{code} {res}" if code else res + res = f"{res} ext. {ext}" if ext else res + return res + +def get_phones(content): + return list(filter(None, map(parse_phone, rgx_phones().findall(content)))) + +content = pyperclip.paste() +phones = get_phones(content) +emails = rgx_emails().findall(content) + +for phone in phones: + print(phone) + +for email in emails: + print(email) diff --git a/exercises/ex07/requirements.txt b/exercises/ex07/requirements.txt new file mode 100644 index 0000000..c9c47dd --- /dev/null +++ b/exercises/ex07/requirements.txt @@ -0,0 +1 @@ +pyperclip