首页 > 解决方案 > Python Gmail 解析和正则表达式

问题描述

我的 Python 函数扫描 Gmail 中的股票期权符号。到目前为止,它使用以下代码解析主题行。相反,我希望它解析消息正文,因为通常有太多符号不适合主题。类似的正则表达式可能会起作用,但是包含符号的行在消息正文中重复了两次(请参阅附件示例)。因此,正则表达式一旦到达行尾字符就应该停止。

我将感谢您重新利用正则表达式的帮助!

def parse_symbols_from_email_to_list(email_msg):
    if email_msg['Subject'].find("Following list of symbols were added") != -1:
        symbols_list = re.findall(r'\.[A-Z]+[A-Z0-9]+\.*[0-9]+', email_msg['Subject'])
        symbols_list = list(dict.fromkeys(symbols_list))
        return symbols_list

标签: pythonregexemail

解决方案


将您的正则表达式更改为:.*?\.(.*),.*\.(.*)\..*\nA

它将捕获第一个:直到第一个换行符,然后是字母A

使用您的代码,它看起来像:

def parse_symbols_from_email_to_list(email_msg):
    if email_msg['Subject'].find("Following list of symbols were added") != -1:
        symbols_list = re.match(':.*?\.(.*),.*\.(.*)\..*\nA', email_msg['Subject'])
        symbols_list = [symbols_list[1], symbols_list[2]]
        return symbols_list

推荐阅读