如何在 Python 中检查字符串是否为数字

PythonPythonBeginner
立即练习

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

简介

在这个实验中,你将学习如何判断 Python 中的字符串是否表示一个数字。我们将首先在一个名为 numeric_strings.py 的 Python 脚本中定义各种字符串,其中一些看起来像数字。这个脚本会将这些字符串打印到控制台,为后续的分析做好准备。

接下来,我们将探索 isdigit() 方法,以识别仅包含数字的字符串,这些字符串表示非负整数。这个方法对于验证数据和确保安全地转换为数字类型至关重要。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/BasicConceptsGroup -.-> python/type_conversion("Type Conversion") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") subgraph Lab Skills python/strings -.-> lab-559573{{"如何在 Python 中检查字符串是否为数字"}} python/type_conversion -.-> lab-559573{{"如何在 Python 中检查字符串是否为数字"}} python/build_in_functions -.-> lab-559573{{"如何在 Python 中检查字符串是否为数字"}} python/catching_exceptions -.-> lab-559573{{"如何在 Python 中检查字符串是否为数字"}} end

定义数字字符串

在这一步中,我们将探讨 Python 如何处理表示数字的字符串。这些字符串被称为“数字字符串”。了解如何识别和处理它们对于数据验证和操作至关重要。

数字字符串是仅包含可被解释为数字的字符的字符串。它可以是整数、浮点数,甚至是科学记数法表示的数字。

让我们从创建一个 Python 脚本来查看一些示例开始。

  1. 在 VS Code 编辑器中,在你的 ~/project 目录下创建一个名为 numeric_strings.py 的新文件。

  2. 将以下代码添加到 numeric_strings.py 文件中:

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Print the strings
print(f"String 1: {string1}")
print(f"String 2: {string2}")
print(f"String 3: {string3}")
print(f"String 4: {string4}")
print(f"String 5: {string5}")
print(f"String 6: {string6}")
print(f"String 7: {string7}")
print(f"String 8: {string8}")
  1. 保存 numeric_strings.py 文件。

  2. 现在,从终端运行该脚本:

python numeric_strings.py

你应该会看到以下输出:

String 1: 123
String 2: 3.14
String 3: -42
String 4: 0
String 5:   56
String 6: abc
String 7: 123.45.67
String 8: 1e10

如你所见,我们定义了几个字符串,其中一些看起来像数字。在接下来的步骤中,我们将学习如何确定这些字符串中哪些可以安全地转换为数字类型。

使用 isdigit() 检查整数

在这一步中,你将学习如何使用 isdigit() 方法来检查一个字符串是否仅包含数字,并且表示一个非负整数。这个方法在验证用户输入或从文件中读取的数据时特别有用。

isdigit() 方法是 Python 中的一个内置字符串方法。如果字符串中的所有字符都是数字,并且至少有一个字符,它将返回 True,否则返回 False

让我们修改之前的脚本以使用 isdigit() 方法:

  1. 在 VS Code 编辑器中打开 numeric_strings.py 文件。

  2. 修改代码,使其包含 isdigit() 方法,如下所示:

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Check if the strings are digits
print(f"String 1 '{string1}' isdigit(): {string1.isdigit()}")
print(f"String 2 '{string2}' isdigit(): {string2.isdigit()}")
print(f"String 3 '{string3}' isdigit(): {string3.isdigit()}")
print(f"String 4 '{string4}' isdigit(): {string4.isdigit()}")
print(f"String 5 '{string5}' isdigit(): {string5.isdigit()}")
print(f"String 6 '{string6}' isdigit(): {string6.isdigit()}")
print(f"String 7 '{string7}' isdigit(): {string7.isdigit()}")
print(f"String 8 '{string8}' isdigit(): {string8.isdigit()}")
  1. 保存 numeric_strings.py 文件。

  2. 从终端运行脚本:

python numeric_strings.py

你应该会看到以下输出:

String 1 '123' isdigit(): True
String 2 '3.14' isdigit(): False
String 3 '-42' isdigit(): False
String 4 '0' isdigit(): True
String 5 '  56  ' isdigit(): False
String 6 'abc' isdigit(): False
String 7 '123.45.67' isdigit(): False
String 8 '1e10' isdigit(): False

如你所见,isdigit() 仅对仅包含数字的字符串返回 True。对于包含小数点、负号、空格或任何非数字字符的字符串,它将返回 False

这个方法对于验证一个字符串是否可以安全地转换为整数而不引发错误很有用。不过,要记住 isdigit() 仅适用于非负整数。对于其他数字类型,我们需要使用不同的方法,这将在下一步中介绍。

尝试使用 float() 进行转换

在这一步中,你将探索如何使用 float() 函数将字符串转换为浮点数。当你需要处理带有小数点或用科学记数法表示的数字时,这非常有用。

float() 函数是 Python 中的一个内置函数,它尝试将其参数转换为浮点数。如果参数是字符串,那么该字符串必须是一个有效的浮点数表示形式。

让我们再次修改脚本,使用 float() 函数,并看看它如何处理不同的字符串:

  1. 在 VS Code 编辑器中打开 numeric_strings.py 文件。

  2. 修改代码,使其包含 float() 函数并处理可能出现的错误:

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Try converting the strings to floats
strings = [string1, string2, string3, string4, string5, string6, string7, string8]

for s in strings:
    try:
        float_value = float(s)
        print(f"String '{s}' can be converted to float: {float_value}")
    except ValueError:
        print(f"String '{s}' cannot be converted to float")
  1. 保存 numeric_strings.py 文件。

  2. 从终端运行脚本:

python numeric_strings.py

你应该会看到以下输出:

String '123' can be converted to float: 123.0
String '3.14' can be converted to float: 3.14
String '-42' can be converted to float: -42.0
String '0' can be converted to float: 0.0
String '  56  ' can be converted to float: 56.0
String 'abc' cannot be converted to float
String '123.45.67' cannot be converted to float
String '1e10' can be converted to float: 10000000000.0

如你所见,float() 可以成功地将表示整数、小数和科学记数法数字的字符串转换为浮点数。它还会自动去除字符串首尾的空白字符(如 string5 所示)。然而,如果字符串不能被解释为有效的浮点数,它会引发 ValueError 异常(如 string6string7 所示)。

使用 try-except 代码块可以让我们优雅地处理这些潜在的错误,避免程序崩溃。在处理用户输入或外部数据源时,这是一种常见且重要的做法。

总结

在本次实验中,我们首先学习了在 Python 中定义数字字符串,即包含可被解释为数字(整数、浮点数等)的字符的字符串。我们创建了一个 numeric_strings.py 脚本,用于定义并打印各种字符串,包括整数、小数以及包含非数字字符的字符串,以此展示不同的字符串格式。

接下来,我们开始探索 isdigit() 方法,该方法用于检查一个字符串是否仅包含数字,即是否表示一个非负整数。本实验还将继续演示如何使用此方法来验证字符串。