xlrd:为什么end_colx是1索引而start_colx是0索引?
假设你有一个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]
),你是不会得到任何东西的。
如果有人有更好的答案,我很想听听。只是想把这个记录下来。