0

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

第一个是我最喜欢的帐户列表。秒数是当该帐户中的某个人向我寻求帮助时记录的帐户列表。但是,第二个列表实际上是一个电子表格,并且不仅仅包含帐号,例如案例 ID 和类别。例如,帐户“100”调用了“Shoes”并记录为案例#50。(还假设电子表格具有三列:Account、Category 和 Case #)。

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

myFavoriteAccounts = ['100','200','300','400','500']

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

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

match = set(myFavoriteAccounts) & set(spreadsheetAccountsColumn)

但我不知道如何遍历电子表格并捕获每次出现这些帐户之一以及类别和案例 ID。

例如,我希望能够确定帐户“100”在两个不同的场合调用了关于“鞋子”的案例 #50,然后再次调用了“袜子”和案例 #70。

4

2 回答 2

0

假设您的数据是 csv,您可以使用 fileptr.readlines() 将其读入,然后根据您的分隔符拆分行,从那里应该很容易说

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 -抬头/

或者

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"
于 2013-01-22T20:10:45.047 回答
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)

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

于 2013-01-22T20:30:32.467 回答