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

Python代码输出重复原因咨询:提取FROM后邮箱为何重复输出

问题:从文本文件中提取From行后的电子邮件地址

原代码如下:

fname = input("Enter file name: ")

fh = open(fname)
count = 0

for line in fh:
    line = line.rstrip()
    if not line.startswith("From"):
        continue
    wds = line.split()
    print(wds[1])
    count +=1

print("There were", count, "lines in the file with From as the first word")

输出示例:

stephen.marquard@uct.ac.za

stephen.marquard@uct.ac.za 

louis@media.berkeley.edu

louis@media.berkeley.edu

zqian@umich.edu

zqian@umich.edu

重复输出的原因分析

出现重复输出的核心原因无非两种:

  • 源文本文件本身包含重复的行:从输出结果看,每个邮箱都连续出现两次,说明你的目标文件里存在完全一样的From开头行,代码只是忠实地读取并输出了每一行对应的邮箱。
  • 代码的匹配逻辑太宽泛:你的代码用line.startswith("From")匹配所有以From开头的行,会同时命中From(作为独立单词开头)和From:(带冒号)这类行。如果文件里同一邮箱对应的From和From:行都存在,也会导致重复输出——比如部分邮件日志里,既有From user@example.com的行,也有From: user@example.com的行,两者都会被你的代码捕获。

如果是第二种情况,你可以把判断条件改成line.startswith("From ")(注意From后面加空格),这样只会匹配以From作为独立单词开头的行,避免误抓From:这类行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:10:36