python - 我的 Python 中的空字符串检测?

标签 python string

这让我大吃一惊。我错过了什么?

我正在尝试检测 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/

相关文章:

python - 在 Windows 上的 iPython 中,不明确的选项卡完成不起作用

python - 如何通过列索引列表对 numpy 数组进行切片

java - 字符串作为 switch 语句

java - 正则表达式拆分 - 但包括换行符 - 包括 CR LF

python Pandas : Find a value in another dataframe and replace it

python - csv导入sqlite3而不指定列类型

Python - 从表中提取数据

python - 在 Python 中递归添加字典

c - 返回类型为 void 的函数

java - 安装向导出现错误编译错误 - 找不到符号