Python正则表达式导致列表索引超出范围错误

Python正则表达式导致列表索引超出范围错误,python,regex,Python,Regex,正在尝试仅从此格式提取电子邮件地址: John Smith 我尝试了以下两种方法,但结果是相同的错误: 索引器错误:列表索引超出范围 email_address = re.findall('(?<=\<)\w+@[a-zA-Z]+\.[a-z]+(?=\>)', sender)[0] email_address = re.findall('<([^>])>', sender)[0] email_address=re.findall(“(?”,发件人)[0]

正在尝试仅从此格式提取电子邮件地址:

John Smith

我尝试了以下两种方法,但结果是相同的错误:

索引器错误:列表索引超出范围

email_address = re.findall('(?<=\<)\w+@[a-zA-Z]+\.[a-z]+(?=\>)', sender)[0]

email_address = re.findall('<([^>])>', sender)[0]
email_address=re.findall(“(?”,发件人)[0]
代码的其余部分:

import webapp2
import logging
from google.appengine.ext.webapp import mail_handlers
from google.appengine.api import mail
import os
from main import WorkRequest
import re


class IncomingMailHandler(mail_handlers.InboundMailHandler):
    def receive(self, message):
        (encoding, payload) = list(message.bodies(content_type='text/plain'))[0]
        body_text = payload.decode()
        logging.info('Received email message from %s, subject "%s": %s' %
                     (message.sender, message.subject, body_text))

        logging.info (message.sender)
        logging.info(message.subject)
        logging.info(body_text)


        sender = str(message.sender)

        email_address = re.findall('<([^>])>', sender)[0]

        wr = WorkRequest()

        wr.email = email_address
        wr.userId = None
        wr.title = message.subject
        wr.content = body_text
        wr.status = "OPEN"
        wr.submission_type = "EMAIL"
        wr.assigned_to = "UNASSIGNED"
        wr.put()

application = webapp2.WSGIApplication([('/_ah/mail/.+', IncomingMailHandler)],debug=True)
导入webapp2
导入日志记录
从google.appengine.ext.webapp导入邮件处理程序
从google.appengine.api导入邮件
导入操作系统
从主导入工作请求
进口稀土
类IncomingMailHandler(mail\u Handler.InboundMailHandler):
def接收(自我,信息):
(编码,有效负载)=列表(message.body(content_type='text/plain'))[0]
body_text=payload.decode()
logging.info('从%s收到电子邮件,主题为“%s”:%s'%
(message.sender、message.subject、body_text))
logging.info(message.sender)
logging.info(message.subject)
logging.info(正文)
sender=str(message.sender)
电子邮件地址=re.findall(']>',发件人)[0]
wr=工作请求()
wr.email=电子邮件地址
wr.userId=None
wr.title=message.subject
wr.content=正文内容
wr.status=“打开”
wr.submission_type=“电子邮件”
wr.assigned_to=“UNASSIGNED”
wr.put()
application=webapp2.WSGIApplication([('/\u ah/mail/+',IncomingMailHandler)],debug=True)

有人能帮忙吗?如果有必要的话,我将Google App Engine与Python一起使用。

在我的例子中,第一个正则表达式可以正常工作:

>>> sender = 'John Smith <jsmith@email.com>'
>>> email_address = re.findall('(?<=\<)\w+@[a-zA-Z]+\.[a-z]+(?=\>)', 
        sender)[0]
>>> email_address
'jsmith@email.com'
>sender='John Smith'
>>>email\u address=re.findall('(?>>email\u address)
[]
您可以在以下位置查看您的正则表达式: 它免费且易于使用


您可以打印(发送者)并将输出添加到您的问题中吗?正则表达式看起来不错,它得到
jsmith@email.com
出自
“John Smith”
第一个正则表达式对我有效(假设发送者是
John Smith
),如果在结束方括号后添加加号,第二个正则表达式有效。
email_address = re.findall('<([^>])>', sender)
>>> email_address
[]