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

Python提取邮件时间戳中小时的代码运行结果不符合预期问题

问题原因
  • 核心错误是对字符串迭代的逻辑理解错误:你定义的txt是单个字符串变量,直接执行for line in txt时,Python会遍历字符串的每个单个字符,而不是按行遍历。循环结束后line最终指向字符串最后一个字符8,和你预期的按行处理完全不符。
  • 由于每次循环拿到的都是单个字符,永远不可能满足line.startswith('From ')的判断条件,所以hr列表不会有任何元素添加,最终输出为空。
修正方案

根据你的使用场景可选择两种修正方式:

场景1:仅处理当前单条文本

直接删除多余的循环即可,代码如下:

txt='From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008'
hr=list()
if txt.startswith('From '):
    line = txt.split()
    hr.append(line[5].split(':')[0])
print(line)
print(hr)

运行后即可输出你预期的结果:

['From', 'stephen.marquard@uct.ac.za', 'Sat', 'Jan', '5', '09:14:16', '2008']
['09']

场景2:后续需要处理多行邮件文本

先调用splitlines()方法把文本拆分为行列表再遍历,代码如下:

# 示例多行邮件文本
txt='''From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
From louis@media.berkeley.edu Fri Jan  4 18:10:48 2008
'''
hr=list()
for line in txt.splitlines():
    if line.startswith('From '):
        split_line = line.split()
        hr.append(split_line[5].split(':')[0])
        print(split_line)
print(hr)

内容的提问来源于stack exchange,提问作者Amit Govind Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:54:02