这让我大吃一惊。我错过了什么?
我正在尝试检测 Excel 工作表中的单元格是否为空。但是似乎没有一个测试以我期望的方式进行。我希望简单的“not idkt”测试会同时检测到空字符串和 None,但是没有......事实上,似乎 None 没有被 - 任何测试检测到,因为在第三行,那是正在打印什么。
代码:
def getFromExcelSheet():
wb = load_workbook("input.xlsx")
idkts = [];
idktRows = get_worksheet_as_list(wb.get_sheet_by_name('Inputs'))
# print "Got these idkts"
for row in idktRows:
# print row[0]
idkt = str(row[2]).strip()
filename = str(row[3]).strip()
if idkt == None:
print "Idkt == none"
if idkt is None:
print "Idkt is none"
if idkt == u"":
print "Idkt is ''"
if idkt != u"":
print "Idkt is !=''"
if not idkt:
print "not IDKT"
if idkt:
print "idkt"
print idkt
输出
Idkt is !=''
idkt
3398041577
Idkt is !=''
idkt
3498100937
Idkt is !=''
idkt
None
最佳答案
idkt
不是空的,它是一个包含单词 'None'
的字符串。
这是您的问题:
idkt = str(row[2]).strip()
row[2]
是一个 None
,当您在其上调用 str
时,它变为 'None'
.
试试这个:
if idkt == 'None': print 'yay!'
您最好在字符串转换之前测试是否为空:
idkt = str(row[2]).strip() if row[2] else None
关于python - 我的 Python 中的空字符串检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13469312/