如何重构Python代码从邮箱域名中正确提取国家代码?
提取邮箱域名中的国家代码:重构方案
我尝试从邮箱域名中提取国家代码,以示例域名unw.us.co测试时,最初的代码无法得到正确结果:
host = 'unw.us.co' data1 = host.find('.') print(data1) data2 = host.find('.', data1) print(data2) data3 = host[data1+1 : data2 ] print(data3)
这段代码执行后,data3输出的是us,无法得到完整的目标代码us.co。调整切片范围后的代码虽然能运行,但硬编码+3的方式不够灵活,适配不了其他长度的域名:
host = 'unw.us.co' data1 = host.find('.') print(data1) data2 = host.find('.', data1) print(data2) data3 = host[data1+1 : data2+ 3 ] print(data3)
重构方案
可以用更灵活的方式实现需求,以下是两种可靠的重构思路:
方法1:分割域名后取最后两级(推荐)
利用字符串的split()方法分割域名,直接取最后两段拼接,适配绝大多数域名格式:
host = 'unw.us.co' domain_parts = host.split('.') # 取最后两个部分作为国家/地区代码 country_code = '.'.join(domain_parts[-2:]) print(country_code) # 输出: us.co
如果你的需求是提取最顶级的国家代码(比如co),只需取domain_parts[-1]即可。
方法2:修正索引逻辑,取第一个点之后的全部内容
如果确定要提取第一个点之后的所有内容作为国家代码,可以直接从第一个点的下一位截取到字符串末尾,无需寻找第二个点:
host = 'unw.us.co' first_dot_index = host.find('.') country_code = host[first_dot_index + 1:] print(country_code) # 输出: us.co
内容的提问来源于stack exchange,提问作者Rahil Nasim
相关产品推荐
相关产品推荐

