Skip to content

Instantly share code, notes, and snippets.

@hiropppe
Created March 6, 2025 02:52
Show Gist options
  • Save hiropppe/62b7d02a1087836fa136692a607b7d1e to your computer and use it in GitHub Desktop.
Save hiropppe/62b7d02a1087836fa136692a607b7d1e to your computer and use it in GitHub Desktop.
コードメモ:ハイフンなし電話番号の分割
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