如何修改Python代码实现两个CSV文件的内容对比与匹配显示?
实现两个CSV文件匹配内容的对比展示
你的现有代码仅读取并打印了两个文件的全部内容,要实现匹配内容展示,可以通过将其中一个文件的内容存入集合(提升查找效率),再遍历另一个文件逐行检查匹配项,具体修改如下:
修改后的基础版代码
# 读取学生名单CSV,将每行内容存入集合(自动去重,且查找速度快) with open("student roster example.csv", "r") as roster_file: roster_content = {line.rstrip() for line in roster_file} # 读取课程代码CSV,逐行检查是否在学生名单中存在匹配 with open("Program codes.csv", "r") as courses_file: print("两个文件的匹配内容:") for line in courses_file: current_line = line.rstrip() if current_line in roster_content: print(current_line)
代码逻辑说明
- 用集合存储第一个文件的行内容:集合的成员查找操作比列表更高效,适合批量对比场景。
- 遍历第二个文件的每一行:去除换行符后检查是否存在于集合中,存在则输出,即两个文件的共同内容。
- 如果需要双向匹配(同时找出第一个文件中在第二个文件里的内容),可以再创建第二个文件的集合,重复遍历检查逻辑。
进阶处理(针对带列结构的CSV)
如果你的CSV是多列格式(比如每行包含专业名称+代码),需要指定匹配列的话,可以用csv模块解析列数据后再对比:
import csv # 假设我们要匹配第一列的内容 with open("student roster example.csv", "r") as roster_file: reader = csv.reader(roster_file) # 提取第一列内容存入集合 roster_columns = {row[0].rstrip() for row in reader} with open("Program codes.csv", "r") as courses_file: reader = csv.reader(courses_file) print("匹配的内容:") for row in reader: if row[0].rstrip() in roster_columns: # 打印整行内容 print(",".join(row))
内容的提问来源于stack exchange,提问作者darkpulse21
相关产品推荐
相关产品推荐

