0

我在 python 中有一个非常基本的问题。我想遍历 csv 文件的每一行并比较以查看第 1 行的第一个字段是否与下一行的第一个字段相同,依此类推。如果找到匹配项,那么我想将该字段放在 object1 中,否则将该字段放在不同的 object2 中。最后我想计算object1 vs object2中有多少个字段。这可以在python中完成吗?这是一个小例子。

BRM_1   679 1929
BRM_1   203 567
BRM_2   367 1308
BRM_3       435     509

如您所见,line1 的 field1 与 line2 的 field2 相同,因此字段 BRM_1 应放置在 object1 中,BRM_2 和 BRM_3 应放置在 object2 中。所以object1的最终数字是1,object2是2。

4

1 回答 1

1

当我看到这个问题没有答案时,我感觉很糟糕。不知道您是否还需要答案,但我们开始吧。我假设您知道如何读取文件并从中列出列表

file1=[['a',1,2],['a',3,4],['b',4,5],['c',3,5]]

li1=[] #first obj
li2=[] #second obj
skip_next = False
file_len = len(file1)

for current_row_num,row in enumerate(file1):
    if skip_next:
        skip_next = False
        pass
    else:
        if current_row_num == (file_len-1):
            # alone
            li2.append(row)
        elif row[0]!=file1[current_row_num+1][0]:
            #current row belongs in obj2
            li2.append(row)
        else:
            # current row has same first col value as next row
            # append both to li1
            li1.append(row)
            li1.append(file1[current_row_num+1])
            skip_next=True

print "first obj\n"+str(li1)

print "second obj\n"+str(li2)

输出看起来像

first obj
[['a', 1, 2], ['a', 3, 4]]
second obj
[['b', 4, 5], ['c', 3, 5]]

我相信这就是你要找的。如果您不关心顺序,只是想知道 row 是否有对应项,那么代码会简单得多。

于 2013-06-16T09:29:30.347 回答