如何使用python查找excel中的指定数据(正数在前,负数在附近)

How to find specified data in excel by using python (positive number first appeared and negative number nearby)

我想在 excel 中的每一行中搜索数据,并找出 序列中第一个出现的正数 (A) 和一个负数 (B) 就在 A 之前 。 喜欢: -5 -6 -3 4 1 我需要数字 -3 和 4

我尝试使用这种代码:

import xlrd

testFile=xlrd.open_workbook('test.xls')
mySheet=testFile.sheet_by_name("Sheet1")

nrows=mySheet.nrows
ncols=mySheet.ncols

def f(j):
    value=mySheet.cell(0,j).value
    return value

for j in range(ncols):
    if f(j)*f(j*1)>0:
        print f(j),f(j+1)

但是当我运行它时,出现错误:

Traceback (most recent call last):
File "test1.py", line 15, in (module)
print f(j),f(j+1)
File "test1.py", line 10, in f
value=mySheet.cell(0,j).value
File "C:\Python27\lib\site-packages\xlrd\sheet.py", line 399, in cell
self._cell_types [rowx][colx],
IndexError: array index out of range

我不知道为什么我不能使用函数f(j)*f(j+1)>0找出第一个正数和附近的负数。 有人能帮忙找出问题吗?

您的范围是从 0 到 j。您正在尝试访问 j+1 值。因此,IndexError:数组索引超出范围。

此外,如果 f(j)*f(j*1)>0:如果 f(j)*f(j+1)<0:您可能想做:这里我更改了两件事.使 j*1 到 j+1 和 >0 到 <0。您正在检查负数正数与负数负数。 f(j)*f(j*1) 应保持 >0,直到找到第一个正数。

并解决索引超出范围 运行 你的循环直到 (ncols-1)

您还可以使用更高效的方式进行操作。只需检查数字是否为正数。如果是,则 return 那个和前一个索引处的值。您不必乘以这是一个额外耗时的命令