使用python从字符串获取电子邮件id的最佳方法

使用python从字符串获取电子邮件id的最佳方法,python,string,Python,String,我们可以通过什么方式使用python从下面的字符串中获取“X-Mailer-recipient:”电子邮件id 使用re Received: from localhost6.localdomain6 (unknown [59.92.85.188]) by smtp.webfaction.com (Postfix) with ESMTP id 05B332078BD1 for <rshivaganesh@gmail.com>; Fri, 26 A

我们可以通过什么方式使用python从下面的字符串中获取“X-Mailer-recipient:”电子邮件id

使用re

    Received: from localhost6.localdomain6 (unknown [59.92.85.188])
        by smtp.webfaction.com (Postfix) with ESMTP id 05B332078BD1
        for <rshivaganesh@gmail.com>; Fri, 26 Aug 2011 04:59:36 -0500 (CDT)
    Content-Type: text/html; charset="utf-8"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Subject: Test subject100
    From: shivaganesh@gmail.com
    To: rshivaganesh@gmail.com
    Date: Fri, 26 Aug 2011 10:01:39 -0000
    Message-ID: <20110826100139.4763.43322@localhost6.localdomain6>
    X-Mailer-status: false
    X-Mailer-recipient: rshivaganesh@gmail.com
收到:来自localhost6.localdomain6(未知[59.92.85.188])
通过smtp.webpartion.com(后缀),ESMTP id为05B332078BD1
对于2011年8月26日星期五04:59:36-0500(CDT)
内容类型:text/html;charset=“utf-8”
MIME版本:1.0
内容传输编码:7bit
主题:测试主题100
发件人:shivaganesh@gmail.com
致:rshivaganesh@gmail.com
日期:2011年8月26日星期五10:01:39-0000
消息ID:
X-Mailer-status:错误
X-Mailer-recipient:rshivaganesh@gmail.com

谢谢

使用regex
X-Mailer-recipient:\s*(*)
。您可以在Python中使用正则表达式,详情如下。您需要确保不会意外地包含超出您要查找内容的文本。例如,上述正则表达式将匹配所有“X-Mailer-recipient:a@b.c布拉格布拉格布拉格”。然后需要访问所需的捕获组。

使用regex
X-Mailer-recipient:\s*(*)
。您可以在Python中使用正则表达式,详情如下。您需要确保不会意外地包含超出您要查找内容的文本。例如,上述正则表达式将匹配所有“X-Mailer-recipient:a@b.c布拉格布拉格布拉格”。然后,您需要访问所需的捕获组。

您还可以使用以下内容:

d = """Received: from localhost6.localdomain6 (unknown [59.92.85.188]) by smtp.webfaction.com (Postfix) with ESMTP id 05B332078BD1 for <rshivaganesh@gmail.com>; Fri, 26 Aug 2011 04:59:36 -0500 (CDT) Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Test subject100 From: shivaganesh@gmail.com To: rshivaganesh@gmail.com Date: Fri, 26 Aug 2011 10:01:39 -0000 Message-ID: <20110826100139.4763.43322@localhost6.localdomain6> X-Mailer-status: false X-Mailer-recipient: rshivaganesh@gmail.com"""

if 'X-Mailer-recipient:' in d:
    d.split('X-Mailer-recipient:')[1].split()[0]
>>> rshivaganesh@gmail.com
d=“”收到:来自localhost6.localdomain6(未知[59.92.85.188]),由smtp.webpartion.com(Postfix)发送,ESMTP id为05B332078BD1 for;Fri,2011年8月26日04:59:36-0500(CDT)内容类型:text/html;charset=“utf-8“MIME版本:1.0内容传输编码:7比特主题:测试主题100来自:shivaganesh@gmail.com致:rshivaganesh@gmail.com日期:2011年8月26日星期五10:01:39-0000邮件ID:X-Mailer-status:false X-Mailer-recipient:rshivaganesh@gmail.com"""
如果d中的“X-Mailer-recipient:”:
d、 拆分('X-Mailer-recipient:')[1]。拆分()[0]
>>> rshivaganesh@gmail.com

您也可以使用类似以下内容:

d = """Received: from localhost6.localdomain6 (unknown [59.92.85.188]) by smtp.webfaction.com (Postfix) with ESMTP id 05B332078BD1 for <rshivaganesh@gmail.com>; Fri, 26 Aug 2011 04:59:36 -0500 (CDT) Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Test subject100 From: shivaganesh@gmail.com To: rshivaganesh@gmail.com Date: Fri, 26 Aug 2011 10:01:39 -0000 Message-ID: <20110826100139.4763.43322@localhost6.localdomain6> X-Mailer-status: false X-Mailer-recipient: rshivaganesh@gmail.com"""

if 'X-Mailer-recipient:' in d:
    d.split('X-Mailer-recipient:')[1].split()[0]
>>> rshivaganesh@gmail.com
d=“”:从localhost6.localdomain6(未知[59.92.85.188])通过smtp.webpartion.com(后缀)接收,ESMTP id为05B332078BD1,用于;2011年8月26日星期五04:59:36-0500(CDT)内容类型:text/html;charset=“utf-8”MIME版本:1.0内容传输编码:7比特主题:测试主题100来自:shivaganesh@gmail.com致:rshivaganesh@gmail.com日期:2011年8月26日星期五10:01:39-0000邮件ID:X-Mailer-status:false X-Mailer-recipient:rshivaganesh@gmail.com"""
如果d中的“X-Mailer-recipient:”:
d、 拆分('X-Mailer-recipient:')[1]。拆分()[0]
>>> rshivaganesh@gmail.com
使用软件包:

从电子邮件导入消息\u从\u字符串
msg=''收到:来自localhost6.localdomain6(未知[59.92.85.188])
通过smtp.webpartion.com(后缀),ESMTP id为05B332078BD1
2011年8月26日星期五04:59:36-0500(CDT)
内容类型:text/html;charset=“utf-8”
MIME版本:1.0
内容传输编码:7bit
主题:测试主题100
发件人:shivaganesh@gmail.com
致:rshivaganesh@gmail.com
日期:2011年8月26日星期五10:01:39-0000
消息ID:
X-Mailer-status:错误
X-Mailer-recipient:rshivaganesh@gmail.com
'''
邮件=来自字符串的消息(msg)
打印邮件['x-mailer-recipient']
使用正则表达式不是一个好主意,因为a)头名称不区分大小写,b)可以有多个同名头,c)一个头可以包含另一个头,例如,某人的邮件地址可能是“X-Mailer-recipient:@hotmail.com”,这会混淆基于regex的方法。

使用包:

从电子邮件导入消息\u从\u字符串
msg=''收到:来自localhost6.localdomain6(未知[59.92.85.188])
通过smtp.webpartion.com(后缀),ESMTP id为05B332078BD1
2011年8月26日星期五04:59:36-0500(CDT)
内容类型:text/html;charset=“utf-8”
MIME版本:1.0
内容传输编码:7bit
主题:测试主题100
发件人:shivaganesh@gmail.com
致:rshivaganesh@gmail.com
日期:2011年8月26日星期五10:01:39-0000
消息ID:
X-Mailer-status:错误
X-Mailer-recipient:rshivaganesh@gmail.com
'''
邮件=来自字符串的消息(msg)
打印邮件['x-mailer-recipient']

使用正则表达式不是一个好主意,因为a)头名称不区分大小写,b)可以有多个同名头,c)一个头可以包含另一个头,例如,某人的邮件地址可能是“X-Mailer-recipient:@hotmail.com”“这将混淆基于ReGX的方法。

也将包括任何电子邮件地址后面的文本。感谢回答,实际上,X-mail收件人可能在字符串的中间,我应该得到正确的答案email@RSGanesh我已经修改了我的样本,所以它将处理字符串中任何部分的收件人。这也包括电子邮件地址后面的任何文本。感谢回答,实际上,X-mail收件人可能在字符串的中间,我应该得到正确的答案email@RSGanesh-我已经修改了示例,因此它可以处理字符串任何部分中的收件人。您可以执行不区分大小写的正则表达式matches@steabert是的,没错。我想我的观点是,对于电子邮件头,有人已经在解析电子邮件头时考虑了所有需要的细节,这样你就不必构建自己的解析机制。我不知道这个模块。我更喜欢它而不是我的正则表达式答案。你可以使用不区分大小写的正则表达式matches@steabert是的,没错。我想我的观点是,对于电子邮件头,有人已经在解析电子邮件头时考虑了所有需要的细节,这样你就不必构建自己的解析机制。我不知道这个模块。我更喜欢它而不是我的正则表达式答案。