我正在尝试比较两组帐号(使用Python和xlrd / xlwt)。
第一个是我最喜欢的帐户列表。秒数是当该帐户中的某人给我打电话求助时记录的帐户列表。但是,第二个列表实际上是一个电子表格,并且不仅仅包含帐号,例如案例ID和类别。例如,帐户'100'在“鞋子”中被称为并且被记录为案例#50。 (还假设电子表格有三列:帐户,类别和案例#)。
我的目标是查看电子表格,并查找来自我最喜欢的某个帐户(来自第一个列表)中的某个人来电寻求帮助的任何时间。所以我基本上想要使用像
这样的东西myFavoriteAccounts = ['100','200','300','400','500']
然后浏览整个电子表格,打印显示我最喜欢的某个帐户的任何实例,以及案例ID和类别。
我已经能够找到两个列表中出现的帐户:
match = set(myFavoriteAccounts) & set(spreadsheetAccountsColumn)
但我不知道如何遍历电子表格,并且每当其中一个帐户出现以及类别和案例ID时就会捕获。
我希望能够确定,例如,在两个不同的场合,对于案例#50的“鞋子”,然后再针对“袜子”和案例#70,称为“100”。
答案 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)
我没有测试过这个特殊的脚本,但我在自己的程序中使用过这种方法。