使用xlrd读取python中的选定列和所有行

我想通过一个Excel表循环,并获得在一组列表或字典中的每一行中选定的列的值。 如果在字典中,对于每一行,第一个选定列中的值将是键,而其他选定列中的值将是该键的值(数组)。 我不知道如何告诉python只读取选定列的值…对于excel表可能有10列,但我只有兴趣在三个例如,三个利益是不连续的。 感谢您使用XLRD的见解。

import xlrd from xlrd import open_workbook import arcpy wb = open_workbook ("c:\\Users\\Admin\\Documents\\Marion\\Courses\\GEOG485\\FinalProject\\Data\\ExcelFiles\\Belize_Culvert_Nov15_V4.0.xlsx") sheet = wb.sheet_by_index(1) keys = [sheet.cell(0, 5).value for col_index in xrange(sheet.ncols)] dict_list = [] for rownum in range(sheet.nrows): d = {keys[col_index]: sheet.cell(0, 5).value for col_index in xrange(sheet.ncols)}: dict_list.append(d) 

我想用作键的字段是第5列,值是列#16和#17作为每个键的数组值…

使用这个命令

 row_slice(rowx, start_colx=0, end_colx=None) 

返回给定行中的Cell对象的切片。

你的代码中的一些问题 –

  1. keys = [sheet.cell(0, 5).value for col_index in xrange(sheet.ncols)] – 这总是将键作为第一行第6列中的值(行和列为0索引)。

  2. d = {keys[col_index]: sheet.cell(0, 5).value – 这甚至不是有效的Python语法

您可以遍历所有行,将列索引4(第5列)作为关键字,将其余列表放入列表中,并将其添加到字典中。示例 –

 import xlrd from xlrd import open_workbook import arcpy wb = open_workbook ("c:\\Users\\Admin\\Documents\\Marion\\Courses\\GEOG485\\FinalProject\\Data\\ExcelFiles\\Belize_Culvert_Nov15_V4.0.xlsx") sheet = wb.sheet_by_index(1) sheetdict = {} for rownum in range(sheet.nrows): sheetdict[sheet.cell(rownum,4)] = [sheet.cell(rownum,15),sheet.cell(rownum,16)] 

最后, sheetdict有所需的字典。

Interesting Posts