Created
January 10, 2014 20:55
-
-
Save eduardonunesp/8362413 to your computer and use it in GitHub Desktop.
Format brazilian phone numbers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def formatPhone(phone): | |
formatted = '' | |
i = 0 | |
# clean phone. skip not digits | |
phone = ''.join(x for x in phone if x.isdigit()) | |
# set pattern | |
if len(phone) == 12: | |
pattern = '(XXX) XXXXX-XXXX' | |
elif len(phone) == 11: | |
pattern = '(XXX) XXXX-XXXX' | |
elif len(phone) == 9: | |
pattern = 'XXXXX-XXXX' | |
elif len(phone) == 8: | |
pattern = 'XXXX-XXXX' | |
else: | |
pattern = 'XXXXXXXXXXXXXXXXXXXX' | |
# reverse | |
phone = phone[::-1] | |
pattern = pattern[::-1] | |
# scan pattern | |
for p in pattern: | |
# skip non X | |
if p != 'X': | |
formatted += p | |
continue | |
try: | |
# add phone digit | |
formatted += phone[i] | |
i += 1 | |
except IndexError: | |
break | |
# reverse again | |
formatted = formatted[::-1] | |
return formatted |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment