大小为n的随机电子邮件选择器

时间:2015-02-19 03:09:40

标签: python regex perl email

我需要使用Python或Perl从大于n的电子邮件列表中随机发送n封电子邮件。电子邮件列表以逗号分隔,如下所示:

email1@host.sx, email2@host.sx, ... email100@host.sx

该文件名为emails.txt。我只需要找到一种随机的方法,无论在这种情况下意味着什么,从列表中选择n,并用逗号将它们分隔成一个名为email_block.txt的单独文件。


我对该问题的理解是,我需要REGEX(\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b)将所有电子邮件提取到一个数组中,并使用随机数生成器生成0和{{之间的唯一数字列表1}},其中x-1是原始列表中的电子邮件数量(我假设在Perl中开始数组位置,Python从x开始),然后使用这些数字打印出来新的电子邮件块到另一个文件中。也许这些随机数可以放入另一个数组中,然后放入电子邮件数组中。

1 个答案:

答案 0 :(得分:0)

试一试

import csv
import random

def select_n_random(n):
    fin = open('emails.csv', 'rb')
    reader = csv.reader(fin)
    email_list = list(reader)[0]
    output_list = []
    for i in range(n):
        idx = random.randint(0, len(email_list)-1)
        output_list.append(email_list.pop(idx))

    fout = open('email_output.csv', 'wb')
    writer = csv.writer(fout, quoting=csv.QUOTE_ALL)
    writer.writerow(output_list)

    fout.close()
    fin.close()

select_n_random(10)

根据评论中的信息进行修改:

import csv
import random

def select_n_random(n):
    fin = open('emails.csv', 'r+')
    reader = csv.reader(fin)
    email_list = list(reader)[0]
    output_list = []
    for i in range(n):
        idx = random.randint(0, len(email_list)-1)
        output_list.append(email_list.pop(idx))

    fout = open('email_output.csv', 'wb')
    writer = csv.writer(fout, quoting=csv.QUOTE_NONE)
    writer.writerow(output_list)

    fout.close()
    fin.close()

    # reopen original file and remove the randomly selected emails
    fin = open('emails.csv', 'w')
    writer = csv.writer(fin, quoting=csv.QUOTE_NONE)
    writer.writerow(email_list)
    fin.close()


select_n_random(10)