过滤Excel表格

我有2个Excel文件:IDList.csv和Database.csv。 IDList包含一个我想从数据库中过滤出的300个ID号的列表,其中包含2000个条目(在数据库中留下1700个条目)。

我试着写一个for循环(对于IDList中的每个ID,在Database.csv中过滤掉这个ID),但是在过滤函数中遇到一些麻烦。 我正在使用Pyvot(http://packages.python.org/Pyvot/tutorial.html)。 我得到一个语法错误… Python / pyvot不喜欢我的语法xl.filter,但我不知道如何更正语法。 这是文档所说的:

xl.tools.filter(func,range)通过对给定范围应用func过滤行或列。 func被称为范围内的每个值。 如果返回False,则隐藏相应的行/列。 否则,行/列变得可见。

范围必须是行或列向量。 如果它是一个行vector,则列隐藏,反之亦然。

请注意,要取消隐藏行/列,范围必须包含隐藏的单元格。 例如,取消隐藏范围:xl.filter(lambda v:True,some_vector.including_hidden)

这是我的代码:

import xl IDList = xl.Workbook("IDList.xls").get("A1:A200").get() for i in range(1,301): xl.filter(!=IDList[i-1],"A1:A2000") 

如何使用IDList.csv中的条件过滤Database.csv中的列? 我接受Python或Excel VBAmacros的解决scheme,尽pipe我更喜欢Python。

 import csv with open("IDList.csv","rb") as inf: incsv = csv.reader(inf) not_wanted = set(row[0] for row in incsv) with open("Database.csv","rb") as inf, open("FilteredDatabase.csv","wb") as outf: incsv = csv.reader(inf) outcsv = csv.writer(outf) outcsv.writerows(row for row in incsv if row[0] not in not_wanted)