我有一个方法,它遍历Excel工作表,将数据解析为一个集合。但是,如果图纸中不存在该数据,我希望它返回None
,而不是空集。示例:
import xlrd
def scanSheet(self, sheet):
kwds = ['kwd1','kwd2'] #pretend these are header names for the columns
mySet = set()
if not sheet:
return self.dataset #set to None in __init__
for row in range(sheet.nrows):
for col in range(sheet.ncols):
if str(sheet.cell_value(row, col)).lower() in kwds:
sheetLength = list(range(row+1, sheet.nrows)) #ignore the header row
for idx in range(len(sheetLength):
data = sheet.cell(sheetLength[i], col).value
mySet.add(data)
self.dataset = mySet
如果有数据,它会返回一个集合,一切都很简单。如果没有数据,它将返回set()
,如上所述。如果列表为空而不是set()
,是否可以将其设置为None
?函数开头的if
语句不会触发类变量的None
值的原因是Excel工作表存在,但不包含被认为感兴趣的数据。
由于空集是伪造的,您可以进行
def func(yourset):
return yourset or None
如果yourset
为空(也称为False
y(,它将返回None
。
print(func(set([42])))
print(func(set()))
输出:
{42}
None
查看真实值测试