邮箱提取代码故障求助:域名未转大写且功能异常
代码问题排查与修复
针对你提到的域名未转大写、邮箱分离错误的问题,逐一分析并修复:
问题1:域名转大写未生效
你代码里的.upper()写法本身没问题,但提供的代码中存在非法引号(HTML转义的"),这会导致Python语法报错,程序根本执行不到域名转大写的逻辑。
解决:把所有引号替换为英文双引号",确保代码语法合法。
问题2:邮箱分离与有效性判断错误
你的条件len(email[email.index('@') + 1:]) > 3有逻辑漏洞:
- 像
me.io这种长度为3的有效域名会被误判为无效,导致分离逻辑无法触发 - 多次调用
email.index('@')冗余,且若出现异常会重复报错
修复后的代码
while True: print() email = input("Enter Your Email: ").strip() print() at_position = email.find('@') # 合理的有效性判断:@存在、用户名非空、域名至少有2个字符(如co、io) if at_position != -1 and at_position > 0 and len(email[at_position+1:]) >= 2: username = email[:at_position] domain = email[at_position+1:].upper() print("Username: ", username) print("Domain: ", domain) else: print("Invalid email!")
关键修复点
- 替换非法引号,保证代码正常运行
- 用
find()替代index(),避免找不到@时抛出异常 - 调整域名长度判断逻辑,兼容短域名
- 提前提取用户名和域名,让代码更简洁易读
内容的提问来源于stack exchange,提问作者M. Nithesh Reddy
相关产品推荐
相关产品推荐

