将列表与电子表格进行比较(Python / xlrd)

时间:2013-01-22 19:45:14

标签: python list compare spreadsheet xlrd

我正在尝试比较两组帐号(使用Python和xlrd / xlwt)。

第一个是我最喜欢的帐户列表。秒数是当该帐户中的某人给我打电话求助时记录的帐户列表。但是,第二个列表实际上是一个电子表格,并且不仅仅包含帐号,例如案例ID和类别。例如,帐户'100'在“鞋子”中被称为并且被记录为案例#50。 (还假设电子表格有三列:帐户,类别和案例#)。

我的目标是查看电子表格,并查找来自我最喜欢的某个帐户(来自第一个列表)中的某个人来电寻求帮助的任何时间。所以我基本上想要使用像

这样的东西
myFavoriteAccounts = ['100','200','300','400','500']

然后浏览整个电子表格,打印显示我最喜欢的某个帐户的任何实例,以及案例ID和类别。

我已经能够找到两个列表中出现的帐户:

match = set(myFavoriteAccounts) & set(spreadsheetAccountsColumn)

但我不知道如何遍历电子表格,并且每当其中一个帐户出现以及类别和案例ID时就会捕获。

我希望能够确定,例如,在两个不同的场合,对于案例#50的“鞋子”,然后再针对“袜子”和案例#70,称为“100”。

2 个答案:

答案 0 :(得分:0)

假设你的数据是csv,你可以使用fileptr.readlines()来读取它,然后根据你的deliminator拆分行,从那里应该很容易说

data = open('myfilepath','r').readlines()
data = [ d.split('delim') for d in data ]
accountitems = {}

for row in data:
    if row[0] in match: # the account number
        accountitems.setdefault(row[0],[]).append(line)

这将构建一个字典,其密钥是帐户匹配,其值是包含该帐户的所有条目的列表

您还可以查看我使用python csv执行的修改后的代码,这可能会有所帮助:http://code.activestate.com/recipes/577996-ordered-csv-read-write-with-colum-based-lookup/

import re
data = open('myfilepath','r').read() #note using read vs readlines
for fave in favelist:
    print "\n".join( re.findall(r"^%s.*$" % fave, data) ), "\n"

答案 1 :(得分:0)

这里有一些代码作为骨架。

xls = xlrd.open_workbook(xlsname)
worksheet = xls.sheet_by_name('Accounts') # Use whatever name is on the worksheet tab in excel
max_col = worksheet.ncols - 1 # Cells addressed from 0
max_row = worksheet.nrows - 1 # Cells addressed from 0
account_col = 0 # Assuming it's the first column

for row in xrange(0, max_row):
    value = xlrd.cell_value(row, account_col)
    if value in favorites:
        print "Do something"
        print "I can address other cells in this row if I want"
        for col in xrange(0, max_col):
            new_value = xlrd.cell_value(row, col)

我没有测试过这个特殊的脚本,但我在自己的程序中使用过这种方法。