从数据框中的多个电子邮件地址中提取域名

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (4)

我试图从以下数据框中提取多个域名:

    email
0   test1@gmail1.com; test1@gmail2.com
1   test3@gmail3.com; test4@gmail4.com
2   test5@gmail5.com

我可以使用以下代码拆分和提取第一个电子邮件地址:

orig = []
mylist = []
for i in df['email']:
    orig.append(i)
    i = i[ i.find("@") : ]
    i = i.split(";")
    i = ';'.join(i)
    mylist.append(i)

将列表附加到数据框后,我得到以下结果:

    origemail                           newemail
0   test1@gmail1.com; test1@gmail2.com  @gmail1.com; test1@gmail2.com
1   test3@gmail3.com; test4@gmail4.com  @gmail3.com; test4@gmail4.com
2   test5@gmail5.com  @gmail5.com

我追求的结果是:(这些电子邮件地址可能不限于两个,可能更多。)

    origemail                           newemail
0   test1@gmail1.com; test1@gmail2.com  @gmail1.com; @gmail2.com
1   test3@gmail3.com; test4@gmail4.com  @gmail3.com; @gmail4.com
2   test5@gmail5.com                    @gmail5.com

有人可以指出我正确的方向,以达到理想的输出?提前致谢。

提问于
用户回答回答于

这样的事情应该有效:

orig = []
mylist = []
for i in df['email']:
    orig.append(i)
    emails = i.strip().split(';')
    domains = [x[x.find('@'):] for x in emails]
    if len(domains) == 1:
        domain_string = domains
    else:
        domain_string = '; '.join(domains)
    mylist.append(domain_string)

它(1)遍历所有电子邮件,(2)首先将它们附加到orig,(3)找到域,然后(4)连接它们并将它们附加到mylist

用户回答回答于

你的代码的for循环需要像这样重构:

  1. 将当前项追加到原始列表中
  2. 用分号';'拆分所有电子邮件
  3. 为每封电子邮件修剪空白区域
  4. 找到'@'符号并提取域的子字符串
  5. 使用';'加入所有域名
  6. 将结果追加到mylist

希望这个seudocode可以提供帮助。

所属标签

可能回答问题的人

  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问5 回答
  • Dingda

    Dingda · 站长 (已认证)

    4 粉丝0 提问3 回答
  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问3 回答
  • 螃蟹居

    1 粉丝0 提问2 回答

扫码关注云+社区

领取腾讯云代金券