Skip to content

Instantly share code, notes, and snippets.

@eduardonunesp
Created January 10, 2014 20:55
Show Gist options
  • Save eduardonunesp/8362413 to your computer and use it in GitHub Desktop.
Save eduardonunesp/8362413 to your computer and use it in GitHub Desktop.
Format brazilian phone numbers
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