这让我大吃一惊。我想念什么?

我正在尝试检测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,当您在其上调用'None'时,该名称将变为str
尝试这个:

if idkt == 'None': print 'yay!'


在进行字符串转换之前,最好对空度进行测试:

idkt = str(row[2]).strip() if row[2] else None

关于python - Python中的空字符串检测?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13469312/

10-16 22:43