获取两个文件数组的差集,提取数组中的独有元素
计算两个邮箱数组的差集方案
嘿,这个需求其实挺常见的——从两个邮箱列表里找出只在第一个列表里存在的邮箱,对吧?下面给你几种实用的实现方式,按需选择就行:
Python 实现(灵活易扩展)
如果需要后续对邮箱数据做更多处理,Python是个不错的选择,代码可读性强,处理小到中等规模的数据都很顺手:
# 读取两个文件,转成干净的邮箱数组(自动去掉空行和换行符) with open('file1.txt', 'r') as f1: array1 = [line.strip() for line in f1 if line.strip()] with open('file2.txt', 'r') as f2: array2 = [line.strip() for line in f2 if line.strip()] # 小数据量直接用列表推导式找差集 array3 = [email for email in array1 if email not in array2] # 如果你的邮箱列表特别大(比如上万条),把array2转成集合会快很多 # set2 = set(array2) # array3 = [email for email in array1 if email not in set2] # 打印结果或者写入新文件 print("差集结果:", array3) with open('result.txt', 'w') as f: for email in array3: f.write(email + '\n')
Bash 命令行实现(快速高效)
如果只是想快速得到结果,不用写脚本,直接用命令行工具就能搞定:
# 先排序两个文件(comm命令需要输入文件是已排序的) sort file1.txt > sorted_file1.txt sort file2.txt > sorted_file2.txt # comm -23 表示只保留第一个文件有、第二个文件没有的行 comm -23 sorted_file1.txt sorted_file2.txt > result.txt
嫌生成中间文件麻烦?可以用匿名管道直接处理:
comm -23 <(sort file1.txt) <(sort file2.txt)
这样输出的就是你要的array3对应的邮箱列表啦~
内容的提问来源于stack exchange,提问作者Swapnil Joshi
相关产品推荐
相关产品推荐

