python - title中文 - plt.title用法




最优雅的方法来检查在Python中的字符串是否为空? (13)

我发现硬编码(sic)“”每次检查一个空字符串都不太好。

干净的代码方法

这样做: foo == ""是非常糟糕的做法。 ""是一个神奇的价值。 你不应该检查不可思议的价值(通常被称为神奇数字

你应该做的是与描述性变量名称进行比较。

描述性变量名称

有人可能会认为“empty_string”是一个描述性变量名称。 事实并非如此

在你去之前做empty_string = ""并且认为你有一个很好的变量名来比较。 这不是“描述性变量名”的意思。

一个好的描述性变量名是基于其上下文的。 你必须考虑空字符串什么。

  • 它从何而来。
  • 为什么在那里。
  • 为什么你需要检查它。

简单的表单字段示例

您正在构建一个用户可以输入值的表单。 你想检查用户是否写了一些东西。

一个好的变量名可能是not_filled_in

这使代码非常可读

if formfields.name == not_filled_in:
    raise ValueError("We need your name")

彻底的CSV解析示例

您正在解析CSV文件,并希望将空字符串解析为None

(由于CSV完全是基于文本的,因此无法使用预定义的关键字就无法表示None

一个好的变量名可能是CSV_NONE

这使得代码易于更改和适应,如果你有一个新的CSV文件代表None与另一个字符串比""

if csvfield == CSV_NONE:
    csvfield = None

没有关于这段代码是否正确的问题。 很明显,它做它应该做的事情。

比较这一点

if csvfield == EMPTY_STRING:
    csvfield = None

这里的第一个问题是,为什么空字符串应该得到特殊处理?

这将告诉未来的编码人员,一个空字符串应始终被视为None

这是因为它混合了业务逻辑(什么CSV值应该是None )和代码实现(我们实际比较的是什么)

两者之间需要分开关注

Python是否有类似空字符串变量的地方?

if myString == string.empty:

无论检查空字符串值的最优雅方式是什么? 我发现硬编码""每次检查一个空字符串都不好。


if stringname:字符串为空时为false 。 我想这不可能比这更简单。


以我的经验测试""并不总是奏效。 这个简单的测试一直为我工作:

if MyString == 'None'

要么

if MyString != 'None'

读取Excel电子表格当列使用以下while循环变空时,我想停止:

while str(MyString) != 'None':

你可以看看这个在Python中分配空值或字符串

这是关于比较空的字符串。 因此,而不是测试not空虚,你可能会测试是你的字符串等于空字符串与""空字符串...“


如果你想区分空字符串和空字符串,我会建议使用, if len(string) ,否则,我会建议使用简单的if string如别人说的。 关于充满空白字符串的警告仍然适用,所以不要忘记strip



我会在剥离之前测试一下没有。 另外,我会使用空字符串为False(或Falsy)的事实。 这种方法类似于Apache的StringUtils.isBlankGuava的Strings.isNullOrEmpty

这是我将用来测试一个字符串是否为空或空或空白:

def isBlank (myString):
    if myString and myString.strip():
        #myString is not None AND myString is not empty or blank
        return False
    #myString is None OR myString is empty or blank
    return True

而且,与测试字符串是否不是“非”或“空”非空白:

def isNotBlank (myString):
    if myString and myString.strip():
        #myString is not None AND myString is not empty or blank
        return True
    #myString is None OR myString is empty or blank
    return False

上述代码更简洁的形式:

def isBlank (myString):
    return not (myString and myString.strip())

def isNotBlank (myString):
    return bool(myString and myString.strip())

我曾经写过类似于Bartek的答案和JavaScript的启发:

def isNotEmpty(s):
    return bool(s and s.strip())

测试:

print isNotEmpty("")    # False
print isNotEmpty("   ") # False
print isNotEmpty("ok")  # True
print isNotEmpty(None)  # False

正如上面所写的prmatta,但有错误。

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

测试空或空白字符串(较短的方式):

if myString.strip():
    print("it's not an empty or blank string")
else:
    print("it's an empty or blank string")

这个怎么样? 也许它不是“最优雅的”,但它对我来说似乎相当完整,清晰和安全:

if (s is None) or (str(s).strip()==""): // STRING s IS "EMPTY"...

有这种可能性的例外或误报吗?


a = ''
b = '   '
a.isspace() -> False
b.isspace() -> True

not str(myString)

对于空的字符串,此表达式为True。 非空字符串,None和非字符串对象都会产生False,但要注意的是对象可能会重写__str__以通过返回虚假值来阻止此逻辑。





comparison-operators