使用Python进行Excel列比较

时间:2014-07-22 06:23:47

标签: python excel

我有一个excel文件,其中有一些列。

COL 1    | COL 2    | COL 3  

ABCD     |  ABC(D)  |   CDA  
AB CD    | ABC D    |   C D - (B)  
A B C D  | (ABCD)   |   ABCD  
ABC D    | ABDC     | ABC D  
A(BC ) D |  AD B - C|   AB CD

我想将每列与每个其他列进行比较,并希望打印列之间的相似点和不同点。

例如:

  1. 比较COL 1和COL 2

    相似之处:

    None
    

    差异:

    ABCD
    AB CD
    A B C D
    A(BC ) D
    ABC(D)
    ABC D
    (ABCD)
    ABDC
    AD B - C
    
  2. 然后比较COL 2和COL 3,然后比较COL 1和COL 3。 只需要精确的字符串匹配,即使是被视为不匹配的空格。 列数可能会增加,比较从列的第2行开始。

    如何在Python中实现这种递归比较,从而为我提供快速处理输出?

2 个答案:

答案 0 :(得分:2)

您可以使用xlrd。首先,阅读文件中的内容。其次,将三列保存为三个词典,因为dict比较快。第三,做比较工作并输出结果。

我建议你检查xlrd的API并自己编写代码。这是link

如有任何问题,请随时提出。

修改

这是一个例子。

#!/usr/bin/python
#-*- coding:utf-8 -*-

name = {1:'a', 2:'b', 3:'c'}
lname = {1:'g', 2:'b', 3:'v'}
common = {}
diff_name   = {}
diff_lname  = {}


for key in name.keys():
    if name[key] == lname[key]:
        common[key] = name[key]
    else:
        diff_name[key] = name[key]
        diff_lname[key] = lname[key]

print 'common part is:', common
print 'diff_name  is: ', diff_name
print 'diff_lname  is: ', diff_lname

答案 1 :(得分:1)

算法可能

for colA in range(0, N):
     for colB in range (colA + 1, N - 1):
        compare(colA, colB)