XLRD似乎没有在fi中找到我的变量

2024-04-19 16:14:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的新手,我正在尝试读取一个.xls文件并查看每行的第一列,看看它是否与我的变量匹配。我不确定我做错了什么,希望有人能帮我。我的最终目标是在第一列中找到以该变量开头的每一行,然后删除其余行或将这些行写入另一个文件。以下是我一直在做的工作:

import xlrd

file_location = "C:/Users/Administrator/Desktop/Test.xls"
workbook = xlrd.open_workbook(file_location)
sheet = workbook.sheet_by_index(0)

mid=5348120284087186

for row in range (sheet.nrows):
    var1=''+sheet.cell_value(row, 0)
    if var1==mid:
        for col in range(sheet.ncols):
            print sheet.cell_value(row, col)

这就是我一直在尝试的一个测试,看看它是否可以首先找到与ID匹配的行。var1语法是由一个朋友建议的,用来将cell\u值欺骗成一个字符串。我可以查看xls文件并知道变量在多行中,但这不会产生任何结果。我还尝试了一个更简单的变体,它只检查变量,然后打印第一个单元格的值,但结果仍然没有输出。提前感谢您的帮助

编辑:

正如我所建议的,我将递归调整为我所理解的需要更改为:

for row in range (sheet.nrows):
    var1=str(sheet.cell_value(row, 0))
    if var1==str(mid):
        for col in range(sheet.ncols):
            print sheet.cell_value(row, col)

但是,这仍然会导致在测试时没有输出处于空闲状态


Tags: 文件inforvaluecellrangecolxls
1条回答
网友
1楼 · 发布于 2024-04-19 16:14:02

你说呢

var1 syntax was suggested by a friend to cheat the cell_value into a string.

这意味着var1是字符串类型。你知道吗

但是,您将它与mid进行比较,后者不是字符串类型。因此var1 == mid将始终计算为false。在比较之前,请确保变量的类型相同。你知道吗

此外,用于var1的语法是gross。如果您真的想从中得到一个字符串,只需使用var1 = str(sheet.cell_value(row, 0))。你知道吗

解决这类问题的方法有以下几点:

for row in range (sheet.nrows):
    var1=str(sheet.cell_value(row, 0))

    print mid, var1, mid==var1, type(mid), type(var1)

    if var1==str(mid):

如果你关心超豪华的空间,做

var1 = str(sheet.cell_value(row,0)).strip()

相关问题 更多 >