You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python对比CSV文件两列并找出共同内容?

嘿,我来帮你梳理下问题~你的需求是找出CSV两列所有元素的共同内容,而不是逐行对比两个元素是否相等,这就是现有代码没得到正确结果的原因啦。

问题分析

你现在的代码是逐行检查每行的两个元素是否完全一致,但你实际需要的是把item1列的所有元素和item2列的所有元素放在一起,找出同时出现在两列里的元素——也就是求两个集合的交集。

修正后的代码

先看完整代码,然后我再拆解每一步:

import csv

# 初始化两个空集合,用来存储两列的元素
col1 = set()
col2 = set()

with open('output/id.csv', 'r') as csvfile:
    csvreader = csv.reader(csvfile)
    # 跳过表头行(第一行的item1,item2)
    next(csvreader)
    # 遍历每一行数据
    for line in csvreader:
        # 把每行的第一列元素加入col1集合,strip()避免空格干扰
        col1.add(line[0].strip())
        # 把每行的第二列元素加入col2集合
        col2.add(line[1].strip())

# 计算两个集合的交集,就是两列的共同内容
common_items = col1 & col2

# 按照你期望的格式输出
print(f"item {' '.join(common_items)}")
代码拆解
  • 用集合存储元素:集合的特性是自动去重,而且求交集的效率很高,非常适合做这种元素匹配的需求。
  • 跳过表头:用next(csvreader)跳过第一行的item1,item2,避免把表头也算进元素里。
  • strip()处理:防止元素前后有空格(比如你的示例里可能存在的空格),确保匹配准确。
  • 求交集:用col1 & col2就能直接得到同时存在于两列的元素,最后用' '.join()把元素拼成你想要的字符串格式。
测试验证

假设你的CSV内容是:

item1,item2
A,B
B,C
C,D
E,F

运行代码后会输出:item B C,完全符合你的期望~

内容的提问来源于stack exchange,提问作者jan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:00:47