如何在python中使用set intersection方法

如何在python中使用set intersection方法,python,intersection,Python,Intersection,我猜我用错了相交函数…有人能看到吗?我试图只打印包含Num1、Num2或Num3 当我打印时,我什么也没有收到。有重复的迭代。您需要通过调用output.seek(0)删除过多的迭代或返回到reader的开头 at_set={'Num1','Num2','Num3'} 对于os.listdir中的文件(压缩的小跑文件): zipped\u path=os.path.join(压缩的小跑文件,文件) 以open(压缩路径,'r')作为输出: reader=csv.reader(输出,分隔符='\t

我猜我用错了相交函数…有人能看到吗?我试图只打印包含
Num1
Num2
Num3


当我打印时,我什么也没有收到。

有重复的迭代。您需要通过调用
output.seek(0)
删除过多的迭代或返回到
reader
的开头

at_set={'Num1','Num2','Num3'}
对于os.listdir中的文件(压缩的小跑文件):
zipped\u path=os.path.join(压缩的小跑文件,文件)
以open(压缩路径,'r')作为输出:
reader=csv.reader(输出,分隔符='\t')
对于读取器中的行:
如果行和集合(行)。相交(在集合处):
打印(行)

我认为迭代构造太多了
对于读卡器中的行
已经在行上迭代,然后
[读卡器中的行如果行]
再次执行该操作,然后
对于读卡器中的行:
实际在单个单元格上迭代,但迭代器变量再次被称为
。。。而且
set(row)
可能会在单个单元格中创建字符集。@Thomas,实际上是在第一次迭代中,然后在列表中完成对csv.reader的迭代。也就是说,我认为它只是在外部进行迭代loop@buran是的,但是我的评论已经够长了:)看起来不错,但是仍然收到一个空的回复…把你的示例文件发布在这里怎么样?已经修复了,谢谢兄弟。分隔符是逗号分隔的,而不是制表符分隔的。
at_set = {'Num1', 'Num2', 'Num3'}
for files in os.listdir(zipped_trots_files):
    zipped_path = os.path.join(zipped_trots_files, files)
    with open(zipped_path, 'r') as output:
        reader = csv.reader(output, delimiter = '\t')
        for row in reader:
            read = [row for row in reader if row] 
            for row in read:
                if set(row).intersection(at_set):
                    print(row)