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

如何修改Python Gmail解析正则 从邮件正文提取股票期权符号

调整后代码实现
import re
import email
from email.policy import default

def parse_symbols_from_email_to_list(email_msg):
    # 主题触发逻辑保持不变
    if email_msg['Subject'].find("Following list of symbols were added") == -1:
        return []
    
    # 提取邮件纯文本正文,跳过附件和HTML格式内容
    email_body = ""
    if email_msg.is_multipart():
        for part in email_msg.walk():
            content_type = part.get_content_type()
            content_disposition = str(part.get("Content-Disposition"))
            if content_type == "text/plain" and "attachment" not in content_disposition:
                email_body = part.get_payload(decode=True).decode()
                break
    else:
        email_body = email_msg.get_payload(decode=True).decode()
    
    # 正则复用原有规则,默认不开启DOTALL模式下.不会匹配换行符,匹配到行尾自动停止
    symbols_list = re.findall(r'\.[A-Z]+[A-Z0-9]+\.*[0-9]+', email_body)
    # 原有去重逻辑保留,自动过滤重复行提取的相同符号
    symbols_list = list(dict.fromkeys(symbols_list))
    return symbols_list
改动说明
  • 新增邮件纯文本正文提取逻辑,适配Gmail多部分邮件结构,避免解析到无关的HTML标签或附件内容
  • 原有正则匹配规则完全保留,利用re库默认不开启DOTALL模式的特性,.不会匹配换行符,自然实现匹配到行尾即停止的效果,不会跨行合并重复行的内容
  • 原有基于插入顺序的去重逻辑不变,可直接过滤两行重复内容提取到的重复符号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:24:03