dynamic在Excel工作簿中从表格构buildPython列表

我试图压缩一些我以前在python中写的代码。 我有一些在Excel工作簿中通过查找表循环的代码。 大约有20张工作簿中包含查找表。 我想遍历每个查找表中的值,并将它们添加到自己的列表中。 我现有的代码如下所示:

test1TableList = [] for row in arcpy.SearchCursor(r"Z:\Excel\LOOKUP_TABLES.xlsx\LookupTable1$"): test1TableList.append(row.Code) test2TableList = [] for row in arcpy.SearchCursor(r"Z:\Excel\LOOKUP_TABLES.xlsx\LookupTable1$"): test2TableList.append(row.Code) test3TableList = [] for row in arcpy.SearchCursor(r"Z:\Excel\LOOKUP_TABLES.xlsx\LookupTable1$"): test3TableList.append(row.Code) test4TableList = [] for row in arcpy.SearchCursor(r"Z:\Excel\LOOKUP_TABLES.xlsx\LookupTable1$"): test4TableList.append(row.Code) test5TableList = [] for row in arcpy.SearchCursor(r"Z:\Excel\LOOKUP_TABLES.xlsx\LookupTable1$"): test5TableList.append(row.Code) 

yadda yadda

我想压缩该代码(也许在一个函数中)。

需要解决的问题:

  1. 表名是完全不同的。 我需要遍历Excel工作簿中的每个工作表,以便a)抓取工作表对象和b)使用工作表名称作为Python列表variables名称的一部分
  2. 我希望每个列表都留在内存中,以便在代码中继续使用

我一直在尝试这样的东西,哪些工作,但python列表variables似乎并没有留在内存中:

 import arcpy, openpyxl from openpyxl import load_workbook, Workbook wb = load_workbook(r"Z:\Excel\LOOKUP_TABLES.xlsx") for i in wb.worksheets: filepath = r"Z:\Excel\LOOKUP_TABLES.xlsx" + "\\" + i.title + "$" varList = [] with arcpy.da.SearchCursor(filepath, '*') as cursor: for row in cursor: varList.append(row[0]) # This is the area I am struggling with. I can't seem to find a way to return # each list into memory. I've tried the following code to dynamically create # variable names from the name of the sheet so that each list has it's own # variable. After the code has run, I'd just like to set a print statement # (ie print variablename1) which will return the list contained in the variable newList = str(i.title) + "List" newList2 = list(varList) print newList + " = " + str(newList2) 

我一直在这方面工作了一段时间,我毫不怀疑,在这一点上,我正在考虑我的解决scheme,但我在一个块。 任何build议,欢迎!

不知道它是否是最适合你的,但你可以使用pandas将你的工作表导入数据框。

 from pandas.io.excel import ExcelFile filename = 'linreg.xlsx' xl = ExcelFile(filename) for sheet in xl.sheet_names: df = xl.parse(sheet) print df 

使用字典来收集每张数据的数据,而不是使用繁殖列表:

 import arcpy from openpyxl import load_workbook wb = load_workbook(r"Z:\Excel\LOOKUP_TABLES.xlsx") sheets = {} for i in wb.worksheets: filepath = r"Z:\Excel\LOOKUP_TABLES.xlsx" + "\\" + i.title + "$" with arcpy.da.SearchCursor(filepath, '*') as cursor: sheets[i.title] = [row[0] for row in cursor] print sheets