对比两个CSV文件并按规则输出差异行至两个文件是否可行?
可行,以下是两种实现方案
方案一:Python 脚本
适合跨平台场景,逻辑清晰易维护:
# 读取CSV文件,返回跳过表头的行集合 def read_csv(file_path): with open(file_path, 'r', encoding='utf-8') as f: lines = f.read().splitlines() return set(lines[1:]) # 跳过第一行表头 # 获取两个文件的行数据 csv1_rows = read_csv('1.csv') csv2_rows = read_csv('2.csv') # Output1写入2.csv所有非表头行(包含交集+仅2.csv有的行) with open('Output1.csv', 'w', encoding='utf-8') as out1: out1.write('\n'.join(csv2_rows)) # Output2写入仅1.csv独有的行 with open('Output2.csv', 'w', encoding='utf-8') as out2: out2.write('\n'.join(csv1_rows - csv2_rows))
方案二:命令行 awk 工具
适合熟悉终端操作的用户,无需编写脚本:
# 将2.csv的非表头行写入Output1.csv(满足交集+仅2.csv有的行需求) awk 'NR>1' 2.csv > Output1.csv # 提取1.csv中不在2.csv里的非表头行,写入Output2.csv awk 'NR==FNR {if(NR>1) rows[$0]; next} FNR>1 && !($0 in rows)' 2.csv 1.csv > Output2.csv
内容的提问来源于stack exchange,提问作者rialnet
相关产品推荐
相关产品推荐

