Last active
December 5, 2024 20:20
-
-
Save yee379/7037873 to your computer and use it in GitHub Desktop.
Determine a phone number's country and region.
This file contains hidden or 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
| import yaml | |
| def locate_phone_number( s, country_code='1', region_code='650', region_digits=7, internal_digits=4, country_digits=10, locations={}, **kwargs ): | |
| s = str(s) | |
| # internal number | |
| if len(s) == internal_digits: | |
| return 'internal', None, s | |
| # regional number | |
| elif len(s) == region_digits: | |
| s = country_code + region_code + s | |
| elif len(s) == country_digits: | |
| s = country_code + s | |
| country = 'unknown' | |
| region = 'unknown' | |
| prev = locations | |
| for i in xrange( len(s) ): | |
| if s[i] in prev: | |
| if 'country' in prev[s[i]]: | |
| country = prev[s[i]]['country'] | |
| elif 'region' in prev[s[i]]: | |
| region = prev[s[i]]['region'] | |
| prev = prev[s[i]] | |
| else: | |
| break | |
| return country, region | |
| if __name__ == "__main__": | |
| locations = yaml.load( open('phone_number_tree.yaml','r') ) | |
| print locate_phone_number( '16501231234', locations=locations ) # ( 'USA', 'CA' ) | |
| print locate_phone_number( '85212312345', locations=locations ) # ( 'HKG', 'unknown' ) |
This file contains hidden or 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
| '1': | |
| '2': | |
| '0': | |
| '1': | |
| region: NJ | |
| '2': | |
| region: DC | |
| '3': | |
| region: CT | |
| '5': | |
| region: AL | |
| '6': | |
| region: WA | |
| '7': | |
| region: ME | |
| '8': | |
| region: ID | |
| '9': | |
| region: CA | |
| '1': | |
| '0': | |
| region: TX | |
| '2': | |
| region: NY | |
| '3': | |
| region: CA | |
| '4': | |
| region: TX | |
| '5': | |
| region: PA | |
| '6': | |
| region: OH | |
| '7': | |
| region: IL | |
| '8': | |
| region: MN | |
| '9': | |
| region: IN | |
| '2': | |
| '4': | |
| region: IL | |
| '5': | |
| region: LA | |
| '8': | |
| region: MS | |
| '9': | |
| region: GA | |
| '3': | |
| '1': | |
| region: MI | |
| '4': | |
| region: OH | |
| '9': | |
| region: FL | |
| '4': | |
| '0': | |
| region: MD | |
| '2': | |
| country: BHS | |
| '6': | |
| country: BRB | |
| '8': | |
| region: MI | |
| '5': | |
| '1': | |
| region: AL | |
| '2': | |
| region: NC | |
| '3': | |
| region: WA | |
| '4': | |
| region: TX | |
| '6': | |
| region: AL | |
| '6': | |
| '0': | |
| region: IN | |
| '2': | |
| region: WI | |
| '4': | |
| country: AIA | |
| '7': | |
| region: PA | |
| '8': | |
| country: ATG | |
| '9': | |
| region: MI | |
| '7': | |
| '0': | |
| region: KY | |
| '6': | |
| region: VA | |
| '8': | |
| '1': | |
| region: TX | |
| '4': | |
| country: VGB | |
| '3': | |
| '0': | |
| '1': | |
| region: MD | |
| '2': | |
| region: DE | |
| '3': | |
| region: CO | |
| '4': | |
| region: WV | |
| '5': | |
| region: FL | |
| '7': | |
| region: WY | |
| '8': | |
| region: NE | |
| '9': | |
| region: IL | |
| '1': | |
| '0': | |
| region: CA | |
| '2': | |
| region: IL | |
| '3': | |
| region: MI | |
| '4': | |
| region: MO | |
| '5': | |
| region: NY | |
| '6': | |
| region: KS | |
| '7': | |
| region: IN | |
| '8': | |
| region: LA | |
| '9': | |
| region: IA | |
| '2': | |
| '0': | |
| region: MN | |
| '1': | |
| region: FL | |
| '3': | |
| region: CA | |
| '5': | |
| region: TX | |
| '3': | |
| '0': | |
| region: OH | |
| '4': | |
| region: AL | |
| '6': | |
| region: NC | |
| '7': | |
| region: LA | |
| '9': | |
| region: MA | |
| '4': | |
| '0': | |
| country: VIR | |
| '5': | |
| country: CYM | |
| '7': | |
| region: NY | |
| '5': | |
| '1': | |
| region: MA | |
| '2': | |
| region: FL | |
| '6': | |
| '0': | |
| region: WA | |
| '1': | |
| region: TX | |
| '8': | |
| '6': | |
| region: FL | |
| '4': | |
| '0': | |
| '1': | |
| region: RI | |
| '2': | |
| region: NE | |
| '4': | |
| region: GA | |
| '5': | |
| region: OK | |
| '6': | |
| region: MT | |
| '7': | |
| region: FL | |
| '8': | |
| region: CA | |
| '9': | |
| region: TX | |
| '1': | |
| '0': | |
| region: MD | |
| '2': | |
| region: PA | |
| '3': | |
| region: MA | |
| '4': | |
| region: WI | |
| '5': | |
| region: CA | |
| '7': | |
| region: MO | |
| '9': | |
| region: OH | |
| '2': | |
| '3': | |
| region: TN | |
| '4': | |
| region: CA | |
| '5': | |
| region: WA | |
| '3': | |
| '0': | |
| region: TX | |
| '2': | |
| region: TX | |
| '4': | |
| region: VA | |
| '5': | |
| region: UT | |
| '4': | |
| '0': | |
| region: OH | |
| '1': | |
| country: BMU | |
| '3': | |
| region: MD | |
| '7': | |
| region: IL | |
| '6': | |
| '9': | |
| region: TX | |
| '7': | |
| '3': | |
| country: GRD | |
| '8': | |
| region: GA | |
| '9': | |
| region: AK | |
| '8': | |
| '0': | |
| region: AZ | |
| '4': | |
| region: PA | |
| '5': | |
| '0': | |
| '1': | |
| region: AK | |
| '2': | |
| region: KY | |
| '3': | |
| region: OR | |
| '4': | |
| region: LA | |
| '5': | |
| region: NM | |
| '7': | |
| region: MN | |
| '8': | |
| region: MA | |
| '9': | |
| region: WA | |
| '1': | |
| '0': | |
| region: CA | |
| '2': | |
| region: TX | |
| '3': | |
| region: OH | |
| '5': | |
| region: IA | |
| '6': | |
| region: NY | |
| '7': | |
| region: MI | |
| '8': | |
| region: NY | |
| '2': | |
| '0': | |
| region: AZ | |
| '3': | |
| '0': | |
| region: CA | |
| '4': | |
| '0': | |
| region: VA | |
| '1': | |
| region: OR | |
| '5': | |
| '1': | |
| region: NJ | |
| '9': | |
| region: CA | |
| '6': | |
| '1': | |
| region: FL | |
| '2': | |
| region: CA | |
| '3': | |
| region: IA | |
| '7': | |
| region: OH | |
| '7': | |
| '0': | |
| region: PA | |
| '1': | |
| region: VA | |
| '3': | |
| region: MO | |
| '4': | |
| region: IN | |
| '5': | |
| region: NM | |
| '8': | |
| '0': | |
| region: OK | |
| '5': | |
| region: NY | |
| '6': | |
| region: MI | |
| '6': | |
| '0': | |
| '1': | |
| region: MS | |
| '2': | |
| region: AZ | |
| '3': | |
| region: NH | |
| '5': | |
| region: SD | |
| '6': | |
| region: KY | |
| '7': | |
| region: NY | |
| '8': | |
| region: WI | |
| '9': | |
| region: NJ | |
| '1': | |
| '0': | |
| region: PA | |
| '2': | |
| region: MN | |
| '4': | |
| region: OH | |
| '5': | |
| region: TN | |
| '6': | |
| region: MI | |
| '7': | |
| region: MA | |
| '8': | |
| region: IL | |
| '9': | |
| region: CA | |
| '2': | |
| '0': | |
| region: KS | |
| '3': | |
| region: AZ | |
| '6': | |
| region: CA | |
| '3': | |
| '0': | |
| region: IL | |
| '1': | |
| region: NY | |
| '6': | |
| region: MO | |
| '4': | |
| '1': | |
| region: IA | |
| '6': | |
| region: NY | |
| '9': | |
| country: TCA | |
| '5': | |
| '0': | |
| region: CA | |
| '1': | |
| region: MN | |
| '6': | |
| '0': | |
| region: MO | |
| '1': | |
| region: CA | |
| '2': | |
| region: MS | |
| '4': | |
| country: MSR | |
| '7': | |
| '0': | |
| country: MNP | |
| '1': | |
| country: GUM | |
| '8': | |
| region: GA | |
| '8': | |
| '1': | |
| region: WV | |
| '2': | |
| region: TX | |
| '4': | |
| country: ASM | |
| '9': | |
| region: FL | |
| '7': | |
| '0': | |
| '1': | |
| region: ND | |
| '2': | |
| region: NV | |
| '3': | |
| region: VA | |
| '4': | |
| region: NC | |
| '6': | |
| region: GA | |
| '7': | |
| region: CA | |
| '8': | |
| region: IL | |
| '1': | |
| '2': | |
| region: IA | |
| '3': | |
| region: TX | |
| '4': | |
| region: CA | |
| '5': | |
| region: WI | |
| '6': | |
| region: NY | |
| '7': | |
| region: PA | |
| '8': | |
| region: NY | |
| '9': | |
| region: CO | |
| '2': | |
| '0': | |
| region: CO | |
| '4': | |
| region: PA | |
| '7': | |
| region: FL | |
| '3': | |
| '0': | |
| region: IL | |
| '1': | |
| region: TN | |
| '2': | |
| region: NJ | |
| '4': | |
| region: MI | |
| '4': | |
| '0': | |
| region: OH | |
| '5': | |
| '4': | |
| region: FL | |
| '7': | |
| region: VA | |
| '8': | |
| country: LCA | |
| '6': | |
| '0': | |
| region: CA | |
| '2': | |
| region: GA | |
| '3': | |
| region: MN | |
| '5': | |
| region: IN | |
| '7': | |
| country: DMA | |
| '9': | |
| region: MO | |
| '7': | |
| '0': | |
| region: GA | |
| '2': | |
| region: FL | |
| '3': | |
| region: IL | |
| '4': | |
| region: MA | |
| '5': | |
| region: NV | |
| '9': | |
| region: IL | |
| '8': | |
| '1': | |
| region: MA | |
| '4': | |
| country: VCT | |
| '5': | |
| region: KS | |
| '6': | |
| region: FL | |
| '8': | |
| '0': | |
| '1': | |
| region: UT | |
| '2': | |
| region: VT | |
| '3': | |
| region: SC | |
| '4': | |
| region: VA | |
| '5': | |
| region: CA | |
| '6': | |
| region: TX | |
| '8': | |
| region: HI | |
| '9': | |
| country: DOM | |
| '1': | |
| '0': | |
| region: MI | |
| '2': | |
| region: IN | |
| '3': | |
| region: FL | |
| '4': | |
| region: PA | |
| '5': | |
| region: IL | |
| '6': | |
| region: MO | |
| '7': | |
| region: TX | |
| '8': | |
| region: CA | |
| '2': | |
| '8': | |
| region: NC | |
| '3': | |
| '0': | |
| region: TX | |
| '1': | |
| region: CA | |
| '2': | |
| region: TX | |
| '4': | |
| '3': | |
| region: SC | |
| '5': | |
| region: NY | |
| '7': | |
| region: IL | |
| '8': | |
| region: NJ | |
| '5': | |
| '0': | |
| region: FL | |
| '6': | |
| region: NJ | |
| '7': | |
| region: MA | |
| '8': | |
| region: CA | |
| '9': | |
| region: KY | |
| '6': | |
| '0': | |
| region: CT | |
| '2': | |
| region: NJ | |
| '3': | |
| region: FL | |
| '4': | |
| region: SC | |
| '5': | |
| region: TN | |
| '8': | |
| country: TTO | |
| '9': | |
| country: KNA | |
| '7': | |
| '0': | |
| region: AK | |
| '6': | |
| country: JAM | |
| '8': | |
| region: PA | |
| '9': | |
| '0': | |
| '1': | |
| region: TN | |
| '3': | |
| region: TX | |
| '4': | |
| region: FL | |
| '6': | |
| region: MI | |
| '7': | |
| region: AK | |
| '8': | |
| region: NJ | |
| '9': | |
| region: CA | |
| '1': | |
| '0': | |
| region: NC | |
| '2': | |
| region: GA | |
| '3': | |
| region: KS | |
| '4': | |
| region: NY | |
| '5': | |
| region: TX | |
| '6': | |
| region: CA | |
| '7': | |
| region: NY | |
| '8': | |
| region: OK | |
| '9': | |
| region: NC | |
| '2': | |
| '0': | |
| region: WI | |
| '5': | |
| region: CA | |
| '8': | |
| region: AZ | |
| '3': | |
| '1': | |
| region: TN | |
| '6': | |
| region: TX | |
| '7': | |
| region: OH | |
| '4': | |
| '0': | |
| region: TX | |
| '1': | |
| region: FL | |
| '7': | |
| region: MI | |
| '9': | |
| region: CA | |
| '5': | |
| '1': | |
| region: CA | |
| '2': | |
| region: MN | |
| '4': | |
| region: FL | |
| '6': | |
| region: TX | |
| '7': | |
| '0': | |
| region: CO | |
| '1': | |
| region: OR | |
| '2': | |
| region: TX | |
| '3': | |
| region: NJ | |
| '8': | |
| region: MA | |
| '9': | |
| region: TX | |
| '8': | |
| '0': | |
| region: NC | |
| '5': | |
| region: LA | |
| '9': | |
| region: MI | |
| country: USA | |
| '2': | |
| '0': | |
| country: EGY | |
| '1': | |
| '1': | |
| country: SSD | |
| '2': | |
| country: ESH | |
| '3': | |
| country: DZA | |
| '6': | |
| country: TUN | |
| '8': | |
| country: LBY | |
| '2': | |
| '0': | |
| country: GMB | |
| '1': | |
| country: SEN | |
| '2': | |
| country: MRT | |
| '3': | |
| country: MLI | |
| '4': | |
| country: GIN | |
| '5': | |
| country: CIV | |
| '6': | |
| country: BFA | |
| '7': | |
| country: NER | |
| '8': | |
| country: TGO | |
| '9': | |
| country: BEN | |
| '3': | |
| '0': | |
| country: MUS | |
| '1': | |
| country: LBR | |
| '2': | |
| country: SLE | |
| '3': | |
| country: GHA | |
| '4': | |
| country: NGA | |
| '5': | |
| country: TCD | |
| '6': | |
| country: CAF | |
| '7': | |
| country: CMR | |
| '8': | |
| country: CPV | |
| '9': | |
| country: STP | |
| '4': | |
| '0': | |
| country: GNQ | |
| '1': | |
| country: GAB | |
| '2': | |
| country: COG | |
| '3': | |
| country: COD | |
| '4': | |
| country: AGO | |
| '5': | |
| country: GNB | |
| '6': | |
| country: IOT | |
| '8': | |
| country: SYC | |
| '9': | |
| country: SDN | |
| '5': | |
| '0': | |
| country: RWA | |
| '1': | |
| country: ETH | |
| '2': | |
| country: SOM | |
| '3': | |
| country: DJI | |
| '4': | |
| country: KEN | |
| '5': | |
| country: TZA | |
| '6': | |
| country: UGA | |
| '7': | |
| country: BDI | |
| '8': | |
| country: MOZ | |
| '6': | |
| '0': | |
| country: ZMB | |
| '1': | |
| country: MDG | |
| '2': | |
| country: REU | |
| '3': | |
| country: ZWE | |
| '4': | |
| country: NAM | |
| '5': | |
| country: MWI | |
| '6': | |
| country: LSO | |
| '7': | |
| country: BWA | |
| '8': | |
| country: SWZ | |
| '9': | |
| country: COM | |
| '7': | |
| country: ZAF | |
| '9': | |
| '0': | |
| country: SHN | |
| '1': | |
| country: ERI | |
| '7': | |
| country: ABW | |
| '8': | |
| country: FRO | |
| '9': | |
| country: GRL | |
| '3': | |
| '0': | |
| country: GRC | |
| '1': | |
| country: NLD | |
| '2': | |
| country: BEL | |
| '3': | |
| country: FRA | |
| '4': | |
| country: ESP | |
| '5': | |
| '0': | |
| country: GIB | |
| '1': | |
| country: PRT | |
| '2': | |
| country: LUX | |
| '3': | |
| country: IRL | |
| '4': | |
| country: ISL | |
| '5': | |
| country: ALB | |
| '6': | |
| country: MLT | |
| '7': | |
| country: CYP | |
| '8': | |
| country: FIN | |
| '9': | |
| country: BGR | |
| '6': | |
| country: HUN | |
| '7': | |
| '0': | |
| country: LTU | |
| '1': | |
| country: LVA | |
| '2': | |
| country: EST | |
| '3': | |
| country: MDA | |
| '4': | |
| country: ARM | |
| '5': | |
| country: BLR | |
| '6': | |
| country: AND | |
| '7': | |
| country: MCO | |
| '8': | |
| country: SMR | |
| '8': | |
| '0': | |
| country: UKR | |
| '5': | |
| country: HRV | |
| '6': | |
| country: SVN | |
| '7': | |
| country: BIH | |
| '9': | |
| country: MKD | |
| '9': | |
| '0': | |
| '6': | |
| country: VAT | |
| country: ITA | |
| '4': | |
| '0': | |
| country: ROU | |
| '1': | |
| country: CHE | |
| '2': | |
| '0': | |
| country: CZE | |
| '1': | |
| country: SVK | |
| '3': | |
| country: LIE | |
| '3': | |
| country: AUT | |
| '4': | |
| country: GBR | |
| '5': | |
| country: DNK | |
| '6': | |
| country: SWE | |
| '7': | |
| country: NOR | |
| '8': | |
| country: POL | |
| '9': | |
| country: DEU | |
| '5': | |
| '0': | |
| '0': | |
| country: SGS | |
| '1': | |
| country: BLZ | |
| '2': | |
| country: GTM | |
| '3': | |
| country: SLV | |
| '4': | |
| country: HND | |
| '5': | |
| country: NIC | |
| '6': | |
| country: CRI | |
| '7': | |
| country: PAN | |
| '8': | |
| country: SPM | |
| '9': | |
| country: HTI | |
| '1': | |
| country: PER | |
| '2': | |
| country: MEX | |
| '3': | |
| country: CUB | |
| '4': | |
| country: ARG | |
| '5': | |
| country: BRA | |
| '6': | |
| country: CHL | |
| '7': | |
| country: COL | |
| '8': | |
| country: VEN | |
| '9': | |
| '0': | |
| country: MAF | |
| '1': | |
| country: BOL | |
| '2': | |
| country: GUY | |
| '3': | |
| country: ECU | |
| '4': | |
| country: GUF | |
| '5': | |
| country: PRY | |
| '6': | |
| country: MTQ | |
| '7': | |
| country: SUR | |
| '8': | |
| country: URY | |
| '9': | |
| country: BES | |
| '6': | |
| '0': | |
| country: MYS | |
| '1': | |
| country: CCK | |
| '2': | |
| country: IDN | |
| '3': | |
| country: PHL | |
| '4': | |
| country: NZL | |
| '5': | |
| country: SGP | |
| '6': | |
| country: THA | |
| '7': | |
| '0': | |
| country: TLS | |
| '2': | |
| country: NFK | |
| '3': | |
| country: BRN | |
| '4': | |
| country: NRU | |
| '5': | |
| country: PNG | |
| '6': | |
| country: TON | |
| '7': | |
| country: SLB | |
| '8': | |
| country: VUT | |
| '9': | |
| country: FJI | |
| '8': | |
| '0': | |
| country: PLW | |
| '1': | |
| country: WLF | |
| '2': | |
| country: COK | |
| '3': | |
| country: NIU | |
| '5': | |
| country: WSM | |
| '6': | |
| country: KIR | |
| '7': | |
| country: NCL | |
| '8': | |
| country: TUV | |
| '9': | |
| country: PYF | |
| '9': | |
| '0': | |
| country: TKL | |
| '1': | |
| country: FSM | |
| '2': | |
| country: MHL | |
| '7': | |
| country: RUS | |
| '8': | |
| '1': | |
| country: JPN | |
| '2': | |
| country: KOR | |
| '4': | |
| country: VNM | |
| '5': | |
| '0': | |
| country: PRK | |
| '2': | |
| country: HKG | |
| '3': | |
| country: MAC | |
| '5': | |
| country: KHM | |
| '6': | |
| country: LAO | |
| '6': | |
| country: CHN | |
| '7': | |
| '0': | |
| country: PCN | |
| '8': | |
| '0': | |
| country: BGD | |
| '6': | |
| country: TWN | |
| '9': | |
| '0': | |
| country: TUR | |
| '1': | |
| country: IND | |
| '2': | |
| country: PAK | |
| '3': | |
| country: AFG | |
| '4': | |
| country: LKA | |
| '5': | |
| country: MMR | |
| '6': | |
| '0': | |
| country: MDV | |
| '1': | |
| country: LBN | |
| '2': | |
| country: JOR | |
| '3': | |
| country: SYR | |
| '4': | |
| country: IRQ | |
| '5': | |
| country: KWT | |
| '6': | |
| country: SAU | |
| '7': | |
| country: YEM | |
| '8': | |
| country: OMN | |
| '7': | |
| '1': | |
| country: ARE | |
| '2': | |
| country: ISR | |
| '3': | |
| country: BHR | |
| '4': | |
| country: QAT | |
| '5': | |
| country: BTN | |
| '6': | |
| country: MNG | |
| '7': | |
| country: NPL | |
| '8': | |
| country: IRN | |
| '9': | |
| '2': | |
| country: TJK | |
| '3': | |
| country: TKM | |
| '4': | |
| country: AZE | |
| '5': | |
| country: GEO | |
| '6': | |
| country: KGZ | |
| '8': | |
| country: UZB |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You have 61 listed as CCK; it is actually the country code for several Australian regions (including the country itself which represents the majority of numbers using 61).
Cocos Islands has a population of 596 versus 23 million in Australia.