Python是否有类似空字符串变量的功能,您可以在其中执行以下操作:

if myString == string.empty:

无论如何,检查空字符串值最优雅的方法是什么?我发现每次检查空字符串的硬编码“”都不太好。


当前回答

正如prmatta在上面发布的,但有错误。

def isNoneOrEmptyOrBlankString (myString):
    if myString:
        if not myString.strip():
            return True
        else:
            return False
    return False

其他回答

以下是适用于任意数量空间的优雅解决方案。

def str_empty(s: str) -> bool:
    """Strip white space and count remaining characters."""
    return len(s.strip()) < 1


>>> str_empty(' ')
True

空字符串是“falsy”(python 2或python 3引用),这意味着它们在布尔上下文中被视为false,因此您可以这样做:

if not myString:

如果知道变量是字符串,这是首选方法。如果变量也可以是其他类型,则应使用:

if myString == "":

有关布尔上下文中为假的其他值,请参阅真值测试文档。

最优雅的方法可能是简单地检查它是真是假,例如:

if not my_string:

但是,您可能需要删除空白,因为:

 >>> bool("")
 False
 >>> bool("   ")
 True
 >>> bool("   ".strip())
 False

但是,您可能应该对此更加明确一点,除非您确定该字符串已通过某种验证,并且是可以通过这种方式测试的字符串。

正如prmatta在上面发布的,但有错误。

def isNoneOrEmptyOrBlankString (myString):
    if myString:
        if not myString.strip():
            return True
        else:
            return False
    return False

PEP 8中“编程建议”部分:

对于序列(字符串、列表、元组),请使用空序列为false的事实。

因此,您应该使用:

if not some_string:

or:

if some_string:

为了澄清,如果序列为空或不为空,则在布尔上下文中将其求值为False或True。它们不等于False或True。