如何在 Python 中检查字符串是否非空

PythonPythonBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何使用不同的方法在 Python 中检查字符串是否为空。本实验将指导你创建一个名为 string_check.py 的 Python 文件,并使用布尔求值 (if string1:) 和 len() 函数 (if len(string1) > 0:) 来判断字符串是否至少包含一个字符。

你将执行该脚本以观察输出,展示 Python 如何使用这两种方法识别非空字符串和空字符串。本实验提供了实际示例和逐步指导,帮助你实现这些技术。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/BasicConceptsGroup -.-> python/booleans("Booleans") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") subgraph Lab Skills python/strings -.-> lab-559579{{"如何在 Python 中检查字符串是否非空"}} python/booleans -.-> lab-559579{{"如何在 Python 中检查字符串是否非空"}} python/conditional_statements -.-> lab-559579{{"如何在 Python 中检查字符串是否非空"}} python/build_in_functions -.-> lab-559579{{"如何在 Python 中检查字符串是否非空"}} end

探索非空字符串

在这一步中,我们将探索如何在 Python 中判断一个字符串是否为非空。非空字符串就是至少包含一个字符的字符串。有几种方法可以检查这个条件,我们将介绍最常见且高效的方法。

首先,使用 VS Code 编辑器在你的 ~/project 目录下创建一个名为 string_check.py 的 Python 文件。

## ~/project/string_check.py
string1 = "Hello"
string2 = ""

if string1:
    print("string1 is non-empty")
else:
    print("string1 is empty")

if string2:
    print("string2 is non-empty")
else:
    print("string2 is empty")

在这段代码中:

  • 我们定义了两个字符串:string1 包含 "Hello",string2 是空字符串。
  • 我们使用 if string1:if string2: 语句来检查字符串是否非空。在 Python 中,空字符串在布尔上下文中会被评估为 False,而非空字符串会被评估为 True

现在,使用 python 命令运行脚本:

python ~/project/string_check.py

你应该会看到以下输出:

string1 is non-empty
string2 is empty

这表明 Python 能正确识别 string1 为非空,string2 为空。

另一种检查字符串是否非空的方法是使用 len() 函数。len() 函数返回字符串中的字符数量。如果长度大于 0,则字符串为非空。

让我们修改 string_check.py 文件以使用 len() 函数:

## ~/project/string_check.py
string1 = "Hello"
string2 = ""

if len(string1) > 0:
    print("string1 is non-empty")
else:
    print("string1 is empty")

if len(string2) > 0:
    print("string2 is non-empty")
else:
    print("string2 is empty")

再次运行脚本:

python ~/project/string_check.py

输出将和之前一样:

string1 is non-empty
string2 is empty

这两种方法都可以用来检查字符串是否非空。第一种方法(在布尔上下文中直接使用字符串)通常被认为更具 Python 风格且更易读。

检查 len() > 0

在这一步中,我们将专门关注如何使用 len() 函数来判断一个字符串是否为非空。正如我们在上一步中看到的,len() 函数会返回字符串中的字符数量。我们可以利用这个值来明确检查字符串是否包含任何字符。

让我们修改 ~/project 目录下的 string_check.py 文件,进一步探索这个方法。我们将添加更多示例,并更明确地使用 len() > 0 条件。

## ~/project/string_check.py
string1 = "Python"
string2 = ""
string3 = " "  ## A string containing a single space

print("String 1:", string1)
print("Length of String 1:", len(string1))

print("String 2:", string2)
print("Length of String 2:", len(string2))

print("String 3:", string3)
print("Length of String 3:", len(string3))


if len(string1) > 0:
    print("string1 is non-empty (len() > 0)")
else:
    print("string1 is empty (len() > 0)")

if len(string2) > 0:
    print("string2 is non-empty (len() > 0)")
else:
    print("string2 is empty (len() > 0)")

if len(string3) > 0:
    print("string3 is non-empty (len() > 0)")
else:
    print("string3 is empty (len() > 0)")

在这段代码中:

  • 我们添加了 string3,它包含一个空格。这很重要,因为如果直接将只包含空格的字符串作为布尔值进行评估(就像我们在上一步中所做的那样),Python 仍然会将其视为非空字符串,而且它的长度大于 0。
  • 我们使用 len() 函数打印每个字符串的长度。
  • 我们使用 if len(string) > 0: 条件来明确检查字符串的长度是否大于 0。

现在,运行脚本:

python ~/project/string_check.py

你应该会看到以下输出:

String 1: Python
Length of String 1: 6
String 2:
Length of String 2: 0
String 3:
Length of String 3: 1
string1 is non-empty (len() > 0)
string2 is empty (len() > 0)
string3 is non-empty (len() > 0)

如你所见,len(string3) 返回 1,因为该字符串包含一个空格。这表明 len() > 0 能准确反映字符串是否包含任何字符,包括空格。

当你特别需要知道字符串的长度,并想根据该长度执行相应操作时,这种方法非常有用。

使用布尔值评估

在这一步中,我们将更深入地探讨 Python 在布尔上下文环境中如何评估字符串。如前所述,Python 将空字符串视为 False,将非空字符串视为 True。这种特性可以直接用于 if 语句和其他布尔表达式中,使你的代码更加简洁易读。

让我们重新审视并修改 ~/project 目录下的 string_check.py 文件,重点关注这种布尔值评估。我们将添加更多示例来展示不同的场景。

## ~/project/string_check.py
string1 = "Python"
string2 = ""
string3 = "  "  ## A string containing two spaces
string4 = None  ## A None object

print("String 1:", string1)
print("String 2:", string2)
print("String 3:", string3)
print("String 4:", string4)

if string1:
    print("string1 is considered True")
else:
    print("string1 is considered False")

if string2:
    print("string2 is considered True")
else:
    print("string2 is considered False")

if string3:
    print("string3 is considered True")
else:
    print("string3 is considered False")

if string4:
    print("string4 is considered True")
else:
    print("string4 is considered False")

在这段代码中:

  • 我们添加了 string4,并将其赋值为 NoneNone 是 Python 中的一个特殊值,表示没有值。需要注意的是,在布尔上下文环境中,None 也会被评估为 False
  • 我们在 if 语句中直接使用字符串和 None,而没有显式地将它们的长度与 0 进行比较。

现在,运行脚本:

python ~/project/string_check.py

你应该会看到以下输出:

String 1: Python
String 2:
String 3:
String 4: None
string1 is considered True
string2 is considered False
string3 is considered True
string4 is considered False

这个输出展示了以下情况:

  • string1("Python")被视为 True,因为它是一个非空字符串。
  • string2("")被视为 False,因为它是一个空字符串。
  • string3(" ")被视为 True,因为它是一个非空字符串(包含空格)。
  • string4(None)被视为 False,因为 None 总是被评估为 False

在 Python 中,直接使用布尔值评估是检查空字符串和 None 值的常用且高效的方法。它使你的代码更具可读性,更易于理解。不过,要注意仅包含空格的字符串,因为使用这种方法时它们会被视为 True。如果你需要专门检查不包含任何字符(包括空格)的字符串,使用 len(string.strip()) > 0 可能更合适。

总结

在这个实验中,我们探讨了如何在 Python 中判断一个字符串是否为非空。我们创建了一个 string_check.py 文件,并定义了两个字符串,一个是非空字符串,另一个是空字符串。然后,我们使用 if string: 语句,利用 Python 的布尔值评估机制(空字符串为 False,非空字符串为 True)来检查字符串是否为非空。

我们还展示了另一种使用 len() 函数的方法。通过检查 len(string) > 0,我们可以判断字符串是否至少包含一个字符,从而确定它是否为非空。这两种方法都能达到相同的效果,即识别非空字符串。