首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在我的Python中检测空字符串?

在我的Python中检测空字符串?
EN

Stack Overflow用户
提问于 2012-11-20 16:38:31
回答 2查看 225关注 0票数 1

这让我大吃一惊。我遗漏了什么?

我正在尝试检测Excel工作表中的单元格是否为空。但是这些测试似乎都没有以我所期望的方式工作。我希望这个简单的"not idkt“测试既可以检测空字符串,也可以不检测任何字符串,但是...实际上,似乎所有的测试都没有检测到,因为在第三行,这就是打印出来的内容。

代码:

代码语言:javascript
复制
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

输出

代码语言:javascript
复制
Idkt is !=''
idkt
3398041577

Idkt is !=''
idkt
3498100937

Idkt is !=''
idkt
None
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-20 16:44:20

idkt不是空的,它是一个包含单词'None'的字符串。这是你的问题:

代码语言:javascript
复制
idkt = str(row[2]).strip()

row[2]是一个None,当你在它上面调用str时,它就变成了'None'。试试这个:

代码语言:javascript
复制
if idkt == 'None': print 'yay!'

最好在字符串转换之前测试是否为空:

代码语言:javascript
复制
idkt = str(row[2]).strip() if row[2] else None
票数 4
EN

Stack Overflow用户

发布于 2012-11-20 16:45:29

问题是您将单元格转换为字符串,然后将结果与Python的None (不是字符串)进行比较。

我假设您使用的是openpyxl,在这种情况下,您应该通过.value访问单元格的值,例如

代码语言:javascript
复制
idkt = row[2].value

然后,您将拥有一个标准的Python对象( (str/int/None等)来表示单元格中的数据。您应该将此值用于非空检查,它的行为将与您最初预期的一样:

代码语言:javascript
复制
if idkt not in ('', None):  # remember bool(0) == False
    ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13469312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档