xlrd:为什么end_colx是1索引而start_colx是0索引?

1 投票
1 回答
518 浏览
提问于 2025-04-18 03:12

假设你有一个Excel表格,里面的布局是这样的:

  A                    | B
1 Name of First Column | Name of Second Column
2 Value in First Column| Value in Second Column

xlrd 这个库在处理Excel文件时的索引方式有点奇怪。首先,我们需要做一些准备工作……

import xlrd
f = open("example.xlsx")
wb = xlrd.open_workbook(file_contents=f.read())
sh = wb.sheet_by_index(0)

我们来看看第一行的数据,使用 row_values 方法。

print sh.row_values(0, start_colx=0, end_colx=1)

结果是什么呢?

[u'Name of First Column']

出什么问题了?row_values 的第一个参数是 rowx“'rowx' 是行索引,从零开始计数”。那两个 colx 呢?“'colx' 是列索引,也从零开始计数。”

你可能会想,两个 colx 应该都是从零开始计数。如果我在 end_colx 中指定我想结束在第 1 列,那我指的是第二列,从零开始算。

1 个回答

1

xlrd的表现让我想起了Python中的切片写法,像这样:

 +---+---+---+---+---+
 | H | e | l | p | A |
 +---+---+---+---+---+
 0   1   2   3   4   5
-5  -4  -3  -2  -1

(假设有一个字符串“HelpA”——这是官方文档中的内容

所以,如果你从0开始,到0结束([0:0]),你是不会得到任何东西的。

如果有人有更好的答案,我很想听听。只是想把这个记录下来。

撰写回答