gpt4 book ai didi

python : XLRD; compare the columns length

转载 作者:太空狗 更新时间:2023-10-29 23:59:39 25 4
gpt4 key购买 nike

我正在使用 xlrd 处理 xls 文件。我的 xls 文件有两列,我的要求是确保两列的行数相等。我从 help() 中了解到我们有一个 row_len() 来查找给定索引的行的长度,但找不到 col_len。你能帮忙吗

这是我的代码

from xlrd import open_workbook
spread_sheet=open_workbook("simple.xls")
sheet1=spread_sheet.sheet_by_index(0)

#validates the no of columns in the Spread sheet
if sheet1.ncols == 2:
for sheet1_rows in range(sheet1.nrows):
for sheet1_cols in range(sheet1.ncols):
value=sheet1.cell(sheet1_rows,sheet1_cols).value
source=sheet1.cell(sheet1_rows,0).value
destination=sheet1.cell(sheet1_rows,1).value
#ignores the Source and Destination Headers
if value not in ('Source','Destination'):
print "Source is : %s \nDestination is : %s\n" % (source,destination)
else:
print "XLS provided is not valid. Check the no of columns is 2"

除了下面的比较,还有一些其他的选择

>>> print len(sheet1.col_values(0))
8
>>> print len(sheet1.col_values(1))
8

感谢@alecxe 的回复。我在下面发现了一些内容,而不是在我的代码中添加几行。请告知这是否可行

 >>> print len(sheet1.col_values(0))
6
>>> print len(sheet1.col_values(1))
6
>>> sheet1.col_values(0)
[u'A', 1.0, 1.0, 1.0, 1.0, 2.0]
>>> sheet1.col_values(1)
[u'B', 2.0, 2.0, 2.0, 2.0, '']
>>> print len(filter(None,sheet1.col_values(1)))
5
>>>

最佳答案

您不能使用 len(sheet.col_values(index)) 来测量列中设置的单元格数量(列长度)。 col_values 长度始终等于 sheet.nrows

假设您在 input.xls 中有以下内容:

A B
1 2
1 2
1 2
1 2
2

然后 len(sheet.col_values(0)) 将返回 5(以及 len(sheet.col_values(1))),这是不正确的。应该是 4。

相反,最好使用这样的东西:

from itertools import takewhile
import xlrd


def column_len(sheet, index):
col_values = sheet.col_values(index)
col_len = len(col_values)
for _ in takewhile(lambda x: not x, reversed(col_values)):
col_len -= 1
return col_len


book = xlrd.open_workbook("input.xls")
sheet = book.sheet_by_index(0)

print column_len(sheet, 0) # prints 4
print column_len(sheet, 1) # prints 5

希望对您有所帮助。

关于 python : XLRD; compare the columns length,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16915864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com