python – 在列中搜索特定项的csv文件

我正在尝试创建一个循环,在csv文件中搜索具有公共第3和第4列的行并对它们执行操作.

我的文件看起来像这样:

name1,x,y,z,notes
name2,a,b,c,notes
name3,a,y,z,notes

我使用的代码读取第一行并标识row [2]和row [3]并执行搜索文件中所有行的列组合.不幸的是,我似乎无法弄清楚如何实际搜索它们.

for row in csvfile:
    row_identify = row[2:3]
    for row in csvfile:
        if row_identify in row:
            print row
        else:
            print "not here"

我希望它打印第一行和第三行(因为y和z将是row_identify).我假设我可以明确声明我想搜索那些行,但这似乎不起作用.我也试过用

row_identify =  str(row[2]),str(row[3])

但这似乎也不起作用.

最佳答案 您可以创建一个对词典,其中键是包含标识列的元组,值是类似行的列表:

>>> import collections
>>> similarities = collections.defaultdict(list)

>>> for row in csvfile:
...     similarities[(row[2], row[3])].append(row)

>>> print similarities 
{('y', 'z'): [['name1', 'x', 'y', 'z', 'notes'], 
              ['name3', 'a', 'y', 'z', 'notes']], 
 ('b', 'c'): [['name2', 'a', 'b', 'c', 'notes']]
}
点赞