如何用Python csv模块校验列值是否存在于另一文件并输出对应行
使用Python csv模块实现跨文件列值匹配并输出对应行
实现思路
- 读取
File1的number列所有值,存入集合(集合的成员查找效率远高于列表,适合大文件场景) - 遍历
File2的每一行,检查该行的number值是否存在于上述集合中 - 若存在,直接输出该行内容
完整代码
import csv # 读取File1的number列值,存入集合 file1_numbers = set() with open('File1.csv', 'r', newline='', encoding='utf-8') as f1: reader = csv.DictReader(f1) for row in reader: # 将number转为整数,避免字符串格式差异导致匹配失败 num = int(row['number']) file1_numbers.add(num) # 遍历File2,匹配并输出符合条件的行 with open('File2.csv', 'r', newline='', encoding='utf-8') as f2: reader = csv.DictReader(f2) for row in reader: current_num = int(row['number']) if current_num in file1_numbers: # 按原文件格式输出整行,可根据需求调整输出样式 print(f'"{row["time"]}",{row["text"]},{row["number"]}')
代码说明
- 使用
csv.DictReader通过表头字段名直接获取列值,无需关心列索引,代码更易维护 - 将
number转为整数类型匹配,能规避csv文件中数值是否带引号、前后空格等格式问题 - 集合存储
File1的number值,确保每次查找都是O(1)时间复杂度,大文件场景下性能优势明显
测试输出
运行代码后会输出:
"15:48:34.865",YES,5145
内容的提问来源于stack exchange,提问作者Slater
相关产品推荐
相关产品推荐

