将分号分隔的电子邮件地址写入csv fi

2024-04-25 23:53:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个档案电子邮件.txt其电子邮件地址如下:

James, Brian < brian.james@abc.com>; Attar, Daniel < Daniel.Attar@abc.com>; Alex, James < james.alex@abc.com>; Trendy, Elizabeth < elizabeth.trendy@abc.com>; jones, Gary < Gary.Jones@abc.com>; bones, byron < byron.bones@abc.com>;

我想将电子邮件地址写入.csv文件的一列中,如下所示:

brian.james@abc.com  
daniel.attar@abc.com  
...  
byron.bones@abc.com  

我编写了一个Python脚本,如下所示:

    fn1 = "email.txt"
    f1 = open(fn1,"r")
    f1r1 = f1.readlines()
    f1r2 = [i.strip() for i in f1r1]
    f1r3 = [i.split(";") for i in f1r2]
    s1 = f1r3[0]
    a = open("ef.csv","w")
    for i in s1:
        j = i.split("<")
        a.write(j[1].strip(">")+"\n")
    a.close()

有没有更好、更有效或更优雅的方法来写这篇文章?你知道吗


Tags: intxtcomfor电子邮件地址abcdaniel
1条回答
网友
1楼 · 发布于 2024-04-25 23:53:46

您可以考虑将文本文件的内容作为单个字符串读取,然后使用^{}从该字符串中提取电子邮件。你知道吗

在本例中,您的电子邮件格式似乎相当具体,因此下面的regex也是具体的。不过,要知道,能够找到任何符合rfc5322的电子邮件地址(电子邮件地址格式的“官方标准”)的regex有几百个字符长。更多信息,请参见Jan Goyvaerts的How to Find or Validate an Email Address。你知道吗

不管怎样。。。你知道吗

import re

with open('emails.txt', 'r') as file:
    # Produces a single string, `emails`
    emails = file.read().replace('\n', '')

regex = re.compile('\S+\.\S+@abc\.com')

for email in regex.findall(emails):
    print(email)
# brian.james@abc.com
# Daniel.Attar@abc.com
# james.alex@abc.com
# elizabeth.trendy@abc.com
# Gary.Jones@abc.com
# byron.bones@abc.com

Regex演练:这个Regex假设每封电子邮件都有一个非常特定的形式:something<dot>somethingelse<at>abc.com。你知道吗

  • \S+是一个或多个非空白字符
  • \.是一个文字句点(反斜杠一个元字符)

相关问题 更多 >