You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python拆分邮箱@后域名输出不全?问题排查与高效实现方法

问题描述

作为Python新手,编写代码尝试拆分提取邮箱地址中@符号后的域名部分时,运行输入邮箱后无法完整打印域名内容:例如输入abc@gmail.com时仅输出gmail.co,域名末尾的字符m缺失。需要排查现有代码的问题,同时了解更快捷高效的实现方式。
异常复现说明:输入abc@gmail.com,实际输出为gmail.co,域名末尾字符m缺失。

待排查问题代码
email = input ('Enter your email address: ').strip()

at = email.find ('@')
after_at = email.find ('  ' , at)
host = email [at+1 : after_at]

print (host)
代码错误原因

核心错误出在after_at = email.find (' ' , at)这一行:

  • 这行代码的逻辑是在@符号的位置之后,查找两个连续空格的位置作为域名截取的结束点,但标准邮箱格式的@后不存在连续空格,str.find()找不到匹配内容时会固定返回-1
  • Python字符串切片遵循左闭右开规则,当结束索引传入-1时,实际会截取到倒数第二个字符为止,不会包含最后一个位置的内容,因此才会出现最后一个字符m丢失、输出gmail.co的现象。
更简洁高效的实现方案
  • 方案1:沿用切片逻辑修正
    不需要额外查找域名结束位置,@符号之后到字符串末尾的全部内容就是域名,直接截取到字符串结尾即可,同时补充简单的格式校验避免无效输入报错:
email = input('Enter your email address: ').strip()
at_pos = email.find('@')
if at_pos == -1:
    print("输入内容不符合邮箱格式")
else:
    domain = email[at_pos+1:]
    print(domain)
  • 方案2:使用split方法实现(代码更简洁)
    直接用@作为分隔符拆分字符串,拆分结果的最后一段就是域名,写法更短更不容易出逻辑错误:
email = input('Enter your email address: ').strip()
if '@' not in email:
    print("输入内容不符合邮箱格式")
else:
    domain = email.split('@')[-1]
    print(domain)

内容的提问来源于stack exchange,提问作者FruitBoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 00:06:25