使用XLRDvalidation单元格值

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

我知道这个值是“text:u'NULL”,但是如果我尝试写一个if函数来比较一个我赋予相同的值的variables,它不会将它们识别为相同的。

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

我已经创build了一个我所指的testing例子,因为这很难描述。 我的代码第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 

以上两个值是不相同的,因为它们是不同的types

假设我有这张桌子:

 | 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

他们不平等。 让我们来看看它们是否属于同一types:

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

他们是不同的types,所以我们不能比较它们。

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

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

这是现在可以用来比较stringtypes的stringtypes。

>>> cell1_value==u'John'
True

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

此方法也可用于比较数字或检查是否有任何条件。