python - 使用 XLRD 验证单元格值

标签 python excel xlrd

我正在尝试使用 XLRD 包读取第 2 行(Excel 中的第 1 行)的值,特别是 A 列。

我知道该值是“text:u'NULL'”,但是如果我尝试编写一个 if 函数来比较我给定相同值的变量,它不会将它们识别为相同的。

(只是为了解释我的电子表格在我引用的单元格中具有值 Null,但使用 XLRD 它将其读取为“text:u'NULL'”,这很好)

我已经创建了一个我所指的测试示例,因为这很难描述。我的代码第 20 行的 b 值肯定是“text:u'NULL'”,所以我不知道为什么它不将其读取为等于 b。

import xlrd

book = xlrd.open_workbook("excelscores.xls")
sheet_name = book.sheet_names()[0]
sheet = book.sheet_by_name(sheet_name)
row_no = 1
row = sheet.row(row_no)

## successful test
a = ['lewis','dylan']
b = a[0]
c = 'lewis'
if c == b:
    print "c is equal to b"
else:
    print "fail"

## test that fails
a = row
b = a[0]
c = "text:u'NULL'"
if c == b:
    print "c is equal to b"
else:
    print "fail"enter code here

最佳答案

以上两个值不相等,因为它们的类型不同

假设我有这张表:

| Name | Age |   
| John | 22  |  
| Phil | 25  |

现在我想读取单元格 (2,1)。
>>> cell1 = sheet.cell(1,0)
>>> print cell1
text:u'John'

>>> match_string = "text:u'John'"

现在match_stringcell1看起来一样。让我们检查一下它们是否相等。

>>> cell1 == match_string
False

他们并不平等。让我们检查一下它们是否属于同一类型:

>>> isinstance(cell1, basestring)
False
>>> type(cell1)
<class 'xlrd.sheet.Cell'>

它们的类型不同,因此我们无法对它们进行比较。

解决方案:我们可以使用单元格的值属性进行比较

>>> cell1_value = cell1.value
>>> print cell1_value
u'John'

这是字符串类型,现在可以用来与字符串类型进行比较。

>>> cell1_value==u'John'
True

所以对于你的情况,你可以这样做:
>>> row[0].value == u'Null'
True

此方法还可用于比较数字或检查任何条件。

关于python - 使用 XLRD 验证单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29907072/

相关文章:

vba - 有效隐藏枢轴项目

excel - 由于数字格式为文本,将 Excel 文件读取到 Python 失败

python - 在 Python 2.7 中为列表中的变量赋值

python - 数据框中缺少数据

excel - ActiveSheet、ActiveWorkbook.ActiveSheet 和 Application.ActiveSheet 的行为有何不同?

python - SciPy 的 optimize.minimize 中的多个变量

javascript - 在远程 Angular 应用程序中下载时 Excel 文件损坏

python - 使用循环命令创建多个字典变量?

python - 如何在 Anaconda (python3) 上安装 pyWavelets 包?

python - 使用 boto3 从 S3 下载大文本文件