大小为 n 的随机电子邮件选择器
Random Email Picker of Size n
我需要从比 n
多得多的电子邮件列表中随机发送 n
封电子邮件——使用 Python 或 Perl。电子邮件列表以逗号分隔,如下所示:
email1@host.sx, email2@host.sx, ... email100@host.sx
文件名为 emails.txt
。我只需要找到一种随机方式,无论在这种情况下这意味着什么,将其中的 select n
从列表中取出并用逗号将它们分隔到一个名为 email_block.txt
的单独文件中。
我对问题的理解是我需要 REGEX (\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b
) 将所有电子邮件提取到数组中并使用随机数生成器生成 0
和 0
之间的唯一数字列表x-1
,其中 x
是原始列表中的电子邮件数量(我假设 Perl 中的起始数组位置和 Python 从 0
开始),然后使用这些数字将新的电子邮件块打印到另一个文件中。或许可以把这些随机数放到另外一个数组中,再放到email数组中。
试一试
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)
我需要从比 n
多得多的电子邮件列表中随机发送 n
封电子邮件——使用 Python 或 Perl。电子邮件列表以逗号分隔,如下所示:
email1@host.sx, email2@host.sx, ... email100@host.sx
文件名为 emails.txt
。我只需要找到一种随机方式,无论在这种情况下这意味着什么,将其中的 select n
从列表中取出并用逗号将它们分隔到一个名为 email_block.txt
的单独文件中。
我对问题的理解是我需要 REGEX (\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b
) 将所有电子邮件提取到数组中并使用随机数生成器生成 0
和 0
之间的唯一数字列表x-1
,其中 x
是原始列表中的电子邮件数量(我假设 Perl 中的起始数组位置和 Python 从 0
开始),然后使用这些数字将新的电子邮件块打印到另一个文件中。或许可以把这些随机数放到另外一个数组中,再放到email数组中。
试一试
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)