Der Versuch, nur die E-Mail-Adresse aus diesem Format zu extrahieren:Python Regex verursacht Listenindex außerhalb des zulässigen Bereichs Fehler
John Smith <[email protected]>
Ich habe die beiden folgenden versucht, und es ergibt sich der gleiche Fehler:
IndexError: list index out of range
email_address = re.findall('(?<=\<)\[email protected][a-zA-Z]+\.[a-z]+(?=\>)', sender)[0]
email_address = re.findall('<([^>])>', sender)[0]
Übriges Code:
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)
Kann mir bitte jemand helfen? Ich verwende Google App Engine mit Python, wenn dies wichtig ist.
können Sie tun 'print (Sender)' und die Ausgabe zu Ihrer Frage hinzufügen? – hansaplast
die Regex sieht gut aus, es wird 'jsmith @ email.com' aus' 'John Smith <[email protected]>" ' – hansaplast
Die erste Regex funktioniert für mich (angenommen der Absender ist' John Smith <[email protected] > '). Die zweite funktioniert, wenn Sie nach der schließenden eckigen Klammer ein Pluszeichen hinzufügen. –