跳到主要内容

对比两列数据

功能:读取文件、处理两列 ID 数据以及输出结果并统计总计数量

示例文件

$ cat input.txt 
aaa bbb
bbb ccc
ccc hhh
ddd kkk
eee zzz
fff
ggg

脚本

# 文件: process_ids.py

# 从文件中读取输入数据
with open("input.txt", "r") as file:
data = file.read()

# 将数据处理为两列 ID 的列表
column1, column2 = [], [] # 初始化两个列表
for line in data.strip().split('\n'): # 去掉开头和结尾的空行,并逐行处理
items = line.split() # 按空格分割每行数据
column1.append(items[0]) # 第一列的数据添加到 column1
if len(items) > 1: # 如果有第二列
column2.append(items[1]) # 第二列的数据添加到 column2

# 计算只在第一列但不在第二列中的 ID
only_in_column1 = set(column1) - set(column2)

# 计算只在第二列但不在第一列中的 ID
only_in_column2 = set(column2) - set(column1)

# 计算两列中重复的 ID
duplicates = set(column1) & set(column2)

# 输出结果并添加提示性文字
print("只在第一列但不在第二列中的 ID(总计 {} 个):".format(len(only_in_column1)))
print("\n".join(only_in_column1))

print("\n只在第二列但不在第一列中的 ID(总计 {} 个):".format(len(only_in_column2)))
print("\n".join(only_in_column2))

print("\n两列中重复的 ID(总计 {} 个):".format(len(duplicates)))
print("\n".join(duplicates))

输出

只在第一列但不在第二列中的 ID(总计 5 个):
aaa
ggg
fff
ddd
eee

只在第二列但不在第一列中的 ID(总计 3 个):
hhh
zzz
kkk

两列中重复的 ID(总计 2 个):
bbb
ccc
Right Bottom Gif
Right Top GIF