Created
March 6, 2025 02:52
-
-
Save hiropppe/62b7d02a1087836fa136692a607b7d1e to your computer and use it in GitHub Desktop.
コードメモ:ハイフンなし電話番号の分割
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
| TEL_DIGITS = { | |
| "050": 4, # IP電話 | |
| "070": 4, # 携帯電話/PHS | |
| "080": 4, # 携帯電話 | |
| "090": 4, # 携帯電話 | |
| # その他 | |
| "020": 3, | |
| "0120": 3, | |
| "0800": 3, | |
| "0570": 3, | |
| "0990": 3, | |
| # 固定電話 | |
| "011": 3, | |
| "0123": 2, | |
| "0124": 2, | |
| "0125": 2, | |
| "0126": 2, | |
| "01267": 1, | |
| "0133": 2, | |
| "0134": 2, | |
| "0135": 2, | |
| "0136": 2, | |
| "01372": 1, | |
| "01374": 1, | |
| "0137": 2, | |
| "01377": 1, | |
| "0138": 2, | |
| "01392": 1, | |
| "0139": 2, | |
| "01397": 1, | |
| "01398": 1, | |
| "0142": 2, | |
| "0143": 2, | |
| "0144": 2, | |
| "0145": 2, | |
| "01456": 1, | |
| "01457": 1, | |
| "0146": 2, | |
| "01466": 1, | |
| "0152": 2, | |
| "0153": 2, | |
| "0154": 2, | |
| "01547": 1, | |
| "015": 3, | |
| "0155": 2, | |
| "01558": 1, | |
| "0156": 2, | |
| "01564": 1, | |
| "0157": 2, | |
| "0158": 2, | |
| "01586": 1, | |
| "01587": 1, | |
| "0162": 2, | |
| "01632": 1, | |
| "01634": 1, | |
| "01635": 1, | |
| "0163": 2, | |
| "0164": 2, | |
| "01648": 1, | |
| "0165": 2, | |
| "01654": 1, | |
| "01655": 1, | |
| "01656": 1, | |
| "01658": 1, | |
| "0166": 2, | |
| "0167": 2, | |
| "0172": 2, | |
| "0173": 2, | |
| "0174": 2, | |
| "0175": 2, | |
| "0176": 2, | |
| "017": 3, | |
| "0178": 2, | |
| "0179": 2, | |
| "0182": 2, | |
| "0183": 2, | |
| "0184": 2, | |
| "0185": 2, | |
| "0186": 2, | |
| "0187": 2, | |
| "018": 3, | |
| "0191": 2, | |
| "0192": 2, | |
| "0193": 2, | |
| "0194": 2, | |
| "0195": 2, | |
| "019": 3, | |
| "0197": 2, | |
| "0198": 2, | |
| "022": 3, | |
| "0220": 2, | |
| "0223": 2, | |
| "0224": 2, | |
| "0225": 2, | |
| "0226": 2, | |
| "0228": 2, | |
| "0229": 2, | |
| "0233": 2, | |
| "0234": 2, | |
| "0235": 2, | |
| "023": 3, | |
| "0237": 2, | |
| "0238": 2, | |
| "0240": 2, | |
| "0241": 2, | |
| "0242": 2, | |
| "0243": 2, | |
| "0244": 2, | |
| "024": 3, | |
| "0246": 2, | |
| "0247": 2, | |
| "0248": 2, | |
| "025": 3, | |
| "0250": 2, | |
| "0254": 2, | |
| "0255": 2, | |
| "0256": 2, | |
| "0257": 2, | |
| "0258": 2, | |
| "0259": 2, | |
| "0260": 2, | |
| "0261": 2, | |
| "026": 3, | |
| "0263": 2, | |
| "0264": 2, | |
| "0265": 2, | |
| "0266": 2, | |
| "0267": 2, | |
| "0268": 2, | |
| "0269": 2, | |
| "0270": 2, | |
| "027": 3, | |
| "0274": 2, | |
| "0276": 2, | |
| "0277": 2, | |
| "0278": 2, | |
| "0279": 2, | |
| "0280": 2, | |
| "0282": 2, | |
| "0283": 2, | |
| "0284": 2, | |
| "0285": 2, | |
| "028": 3, | |
| "0287": 2, | |
| "0288": 2, | |
| "0289": 2, | |
| "0291": 2, | |
| "029": 3, | |
| "0293": 2, | |
| "0294": 2, | |
| "0295": 2, | |
| "0296": 2, | |
| "0297": 2, | |
| "0299": 2, | |
| "03": 4, | |
| "0422": 2, | |
| "042": 3, | |
| "0428": 2, | |
| "04": 4, | |
| "043": 3, | |
| "0436": 2, | |
| "0438": 2, | |
| "0439": 2, | |
| "044": 3, | |
| "045": 3, | |
| "0460": 2, | |
| "046": 3, | |
| "0463": 2, | |
| "0465": 2, | |
| "0466": 2, | |
| "0467": 2, | |
| "0470": 2, | |
| "047": 3, | |
| "0475": 2, | |
| "0476": 2, | |
| "0478": 2, | |
| "0479": 2, | |
| "048": 3, | |
| "0480": 2, | |
| "049": 3, | |
| "0493": 2, | |
| "0494": 2, | |
| "0495": 2, | |
| "04992": 1, | |
| "04994": 1, | |
| "04996": 1, | |
| "04998": 1, | |
| "052": 3, | |
| "053": 3, | |
| "0531": 2, | |
| "0532": 2, | |
| "0533": 2, | |
| "0536": 2, | |
| "0537": 2, | |
| "0538": 2, | |
| "0539": 2, | |
| "054": 3, | |
| "0544": 2, | |
| "0545": 2, | |
| "0547": 2, | |
| "0548": 2, | |
| "0550": 2, | |
| "0551": 2, | |
| "055": 3, | |
| "0553": 2, | |
| "0554": 2, | |
| "0555": 2, | |
| "0556": 2, | |
| "0557": 2, | |
| "0558": 2, | |
| "0561": 2, | |
| "0562": 2, | |
| "0563": 2, | |
| "0564": 2, | |
| "0565": 2, | |
| "0566": 2, | |
| "0567": 2, | |
| "0568": 2, | |
| "0569": 2, | |
| "0572": 2, | |
| "0573": 2, | |
| "0574": 2, | |
| "0575": 2, | |
| "0576": 2, | |
| "05769": 1, | |
| "0577": 2, | |
| "0578": 2, | |
| "058": 3, | |
| "0581": 2, | |
| "0584": 2, | |
| "0585": 2, | |
| "0586": 2, | |
| "0587": 2, | |
| "059": 3, | |
| "0594": 2, | |
| "0595": 2, | |
| "0596": 2, | |
| "0597": 2, | |
| "05979": 1, | |
| "0598": 2, | |
| "0599": 2, | |
| "06": 4, | |
| "072": 3, | |
| "0721": 2, | |
| "0725": 2, | |
| "073": 3, | |
| "0735": 2, | |
| "0736": 2, | |
| "0737": 2, | |
| "0738": 2, | |
| "0739": 2, | |
| "0740": 2, | |
| "0742": 2, | |
| "0743": 2, | |
| "0744": 2, | |
| "0745": 2, | |
| "0746": 2, | |
| "07468": 1, | |
| "0747": 2, | |
| "0748": 2, | |
| "0749": 2, | |
| "075": 3, | |
| "0761": 2, | |
| "076": 3, | |
| "0763": 2, | |
| "0765": 2, | |
| "0766": 2, | |
| "0767": 2, | |
| "0768": 2, | |
| "0770": 2, | |
| "0771": 2, | |
| "0772": 2, | |
| "0773": 2, | |
| "0774": 2, | |
| "077": 3, | |
| "0776": 2, | |
| "0778": 2, | |
| "0779": 2, | |
| "078": 3, | |
| "0790": 2, | |
| "0791": 2, | |
| "079": 3, | |
| "0794": 2, | |
| "0795": 2, | |
| "0796": 2, | |
| "0797": 2, | |
| "0798": 2, | |
| "0799": 2, | |
| "082": 3, | |
| "0820": 2, | |
| "0823": 2, | |
| "0824": 2, | |
| "0826": 2, | |
| "0827": 2, | |
| "0829": 2, | |
| "083": 3, | |
| "0833": 2, | |
| "0834": 2, | |
| "0835": 2, | |
| "0836": 2, | |
| "0837": 2, | |
| "0838": 2, | |
| "08387": 1, | |
| "08388": 1, | |
| "08396": 1, | |
| "0845": 2, | |
| "0846": 2, | |
| "0847": 2, | |
| "08477": 1, | |
| "0848": 2, | |
| "084": 3, | |
| "08512": 1, | |
| "08514": 1, | |
| "0852": 2, | |
| "0853": 2, | |
| "0854": 2, | |
| "0855": 2, | |
| "0856": 2, | |
| "0857": 2, | |
| "0858": 2, | |
| "0859": 2, | |
| "086": 3, | |
| "0863": 2, | |
| "0865": 2, | |
| "0866": 2, | |
| "0867": 2, | |
| "0868": 2, | |
| "0869": 2, | |
| "0875": 2, | |
| "0877": 2, | |
| "087": 3, | |
| "0879": 2, | |
| "0880": 2, | |
| "0883": 2, | |
| "0884": 2, | |
| "0885": 2, | |
| "088": 3, | |
| "0887": 2, | |
| "0889": 2, | |
| "0892": 2, | |
| "0893": 2, | |
| "0894": 2, | |
| "0895": 2, | |
| "0896": 2, | |
| "0897": 2, | |
| "0898": 2, | |
| "089": 3, | |
| "092": 3, | |
| "0920": 2, | |
| "093": 3, | |
| "0930": 2, | |
| "0940": 2, | |
| "0942": 2, | |
| "0943": 2, | |
| "0944": 2, | |
| "0946": 2, | |
| "0947": 2, | |
| "0948": 2, | |
| "0949": 2, | |
| "09496": 1, | |
| "0950": 2, | |
| "0952": 2, | |
| "0954": 2, | |
| "0955": 2, | |
| "0956": 2, | |
| "0957": 2, | |
| "095": 3, | |
| "0959": 2, | |
| "096": 3, | |
| "0964": 2, | |
| "0965": 2, | |
| "0966": 2, | |
| "0967": 2, | |
| "0968": 2, | |
| "0969": 2, | |
| "0972": 2, | |
| "0973": 2, | |
| "0974": 2, | |
| "097": 3, | |
| "0977": 2, | |
| "0978": 2, | |
| "0979": 2, | |
| "098": 3, | |
| "0980": 2, | |
| "09802": 1, | |
| "0982": 2, | |
| "0983": 2, | |
| "0984": 2, | |
| "0985": 2, | |
| "0986": 2, | |
| "0987": 2, | |
| "09912": 1, | |
| "09913": 1, | |
| "099": 3, | |
| "0993": 2, | |
| "0994": 2, | |
| "0995": 2, | |
| "0996": 2, | |
| "09969": 1, | |
| "0997": 2, | |
| } | |
| def split_tel_number(tel_number: str) -> tuple[str, str, str]: | |
| for area_code, city_code_len in sorted(TEL_DIGITS.items(), key=lambda x: -len(x[0])): | |
| if tel_number.startswith(area_code): | |
| city_code_start = len(area_code) | |
| city_code_end = city_code_start + city_code_len | |
| return area_code, tel_number[city_code_start:city_code_end], tel_number[city_code_end:] | |
| # 未知の市外局番 | |
| return tel_number[:4], tel_number[4:6], tel_number[7:] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment