逐行读取.xls文件数据 Python
我想要逐行读取 .xls 文件的数据,并且是通过某个特定单元格的值来读取。
假设有几个主要的列,分别是 ID、姓名、地址、年龄、分数和专业。这些就是主要的字段。
现在我想要访问第 4 行的数据。
我想通过某个单元格的值来访问整行数据。
我试了一些方法:
import xlrd
workbook = xlrd.open_workbook('sheet2.xls')
worksheet = workbook.sheet_by_name('Sheet1')
num_rows = worksheet.nrows - 1
num_cells = worksheet.ncols - 1
curr_row = -1
while curr_row < num_rows:
curr_row += 1
row = worksheet.row(curr_row)
print 'Row:', curr_row
curr_cell = -1
while curr_cell < num_cells:
curr_cell += 1
# Cell Types: 0=Empty, 1=Text, 2=Number, 3=Date, 4=Boolean, 5=Error, 6=Blank
cell_type = worksheet.cell_type(curr_row, curr_cell)
cell_value = worksheet.cell_value(curr_row, curr_cell)
print ' ', cell_type, ':', cell_value
所以我得到了这样的输出:
Row: 8
2 : 96.0
1 : Robert
1 : Honore
1 : 607-829-7943
2 : 56.0
1 : Faye
1 : Wight
1 : Faye.A.Wight@mailinator.com
这样打印出来的整行数据格式是这样的。但我想要通过值来访问这一行。
我们可以用 cell_value = worksheet.cell_value(1, 1) 来获取单元格的值,但我该如何根据这个单元格的值来找到行号呢?我想要根据条件,比如 (id==5) 或 (age==17) 来获取整行数据。
请帮我解决这个问题。
1 个回答
2
你想做的事情叫做“搜索”,但是用 xlrd
是做不到的。这个工具不支持搜索功能。你必须自己通过一个循环来遍历数据,然后进行搜索。
其实这很简单,但要注意性能问题。比如,如果你打算在表格中多次搜索某些内容,那就考虑在第一次查找后把解析出来的数据缓存起来,存到内存里,以便下次使用。