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

如何使用Python列表推导式提取邮箱地址中@符号前的字符串

修正Python列表推导式提取邮箱用户名的问题

嘿,我明白你的问题啦!你现在的代码之所以会把gmail.com也包含进来,是因为你的列表推导式把每个邮箱split("@")后的所有元素都添加到结果里了——毕竟split("@")会返回一个包含两部分的列表,而你用嵌套推导式把这两部分都取出来了。

要只提取@符号之前的字符串,其实不用嵌套推导式,直接对每个邮箱执行split("@")后取第一个元素就好啦!正确的写法是这样:

list_of_email_address = ["aks@gmail.com", "pks@gmail.com"]
input_name = [mail.split("@")[0] for mail in list_of_email_address]
print(input_name)  # 输出: ["aks", "pks"]

简单解释下:

  • 对每个邮箱mail执行split("@"),会得到类似["aks", "gmail.com"]的列表
  • 用[0]取这个列表的第一个元素,就是@前面的用户名
  • 整个列表推导式会遍历所有邮箱,把每个用户名收集起来,正好是你想要的结果

如果担心有些邮箱格式不合法(比如没有@符号),还可以加个判断避免索引错误:

input_name = [mail.split("@")[0] for mail in list_of_email_address if "@" in mail]

这样就能安全地过滤掉不符合格式的邮箱啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:02:37