迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

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

作者:迹忆客 最近更新:2023/03/01 浏览次数:

字符串是由双引号或单引号括起来的字符序列。跨越多行的字符串,也称为多行字符串,用三引号括起来。

另一方面,浮点数是 Python 最常见的内置数字数据类型之一。float 或浮点数可以描述为带小数点的数字。

print(type(3.445))

输出:

<class 'float'>

Python 提供了预定义的类型转换函数,可以将一种数据类型转换为另一种数据类型。这些函数包括分别用于将数据类型转换为整数、字符串和浮点数据类型的 int()str()float() 函数。

除了通过插入小数点创建浮点数外,还可以通过将字符串隐式或显式转换为浮点数来创建浮点数。

仅当值兼容时,隐式转换由 Python 自动完成,无需用户参与。使用 float() 函数可以将字符串数据类型显式转换为浮点数,如下面的代码所示。

count = "22.23"
print(type(count))
r = float(count)
print(type(r))

输出:

<class 'str'>
<class 'float'>

类型转换是 Python 和一般编程中的一个重要概念。当需要在程序中使用特定数据类型时,这一点尤为明显;在这种情况下,类型转换可以将任何数据转换为所需的数据类型。

在执行文件操作(例如将文件读取和写入各种程序)时,经常会遇到此类情况。

虽然在上面的代码片段中,我们毫不费力地使用了单参数函数 float() 将字符串数据类型转换为浮点数字数据类型,但这种方法并非没有限制。这些限制包括 ValueError,它通常用于将具有字符序列的字符串转换为浮动数据类型。

如果传递了超出函数范围的数字,则使用 float 函数可能会导致 OverFlow 错误。下面的代码片段说明了当 float 函数转换无效字符串时如何产生 ValueError

name = "developer"
rslt = float(name)
print(rslt)

输出:

Traceback (most recent call last):
  File "<string>", line 2, in <module>
ValueError: could not convert string to float: 'developer'

ValueError 可以通过确保考虑进行转换的字符串看起来像一个浮点数来避免。

其他实例也可能导致 ValueError,其中包括空格、逗号或任何其他非特殊字符。因此,无论何时处理文件,都需要事先检查字符串值是否有效以及是否可以转换为浮点数。

但是,如果值太多,尝试检查每个值是低效的。或者,我们可以创建一个函数来检查字符串是否是可以转换为浮点数的有效浮点数。

如果字符串无效,程序应该引发异常而不是抛出错误。

def is_valid_float(element: str) -> bool:
    try:
        float(element)
        return True
    except ValueError:
        return False

上面的函数接受一个字符串作为参数,并检查它是否是可以转换为浮点数的有效字符串。如果字符串不是可以转换为浮点数的有效字符串,则该函数返回 false,否则返回 true。

或者,我们可以使用 isdigit() 函数而不是 float() 函数。如果字符串仅包含数字,则 isdigit() 函数返回 true,如果至少有一个字符不是数字,则返回 false。

但是,如果字符串包含浮点数,即使浮点数是有效字符串,此函数也会返回 false。

def is_valid_string(element):
    if element.isdigit():
        print("String is valid")
    else:
        print("String is not valid")

is_valid_string("4546.4646")

输出:

String is not valid

我们将使用 partition 函数来确保 isdigit() 函数不会返回 false 语句,即使字符串包含浮点数。

这个函数允许我们将包含浮点数的字符串分成几部分来检查它们是否是数字。如果两个部分都是数字,该函数会让我们知道这是一个有效的字符串。

def check_float(element):
    partition = element.partition('.')
    
    if element.isdigit():
      newelement = float(element)
      print('string is valid')

    elif (partition[0].isdigit() and partition[1] == '.' and partition[2].isdigit()) or (partition[0] == '' and partition[1] == '.' and partition[2].isdigit()) or (partition[0].isdigit() and partition[1] == '.' and partition[2] == ''):
            newelement = float(element)
            print(newelement)
            print("String is also valid !")
    else:
        print("string is not valid !")

check_float('234.34')    

输出:

234.34
String is also valid !

请注意,如果字符串包含不是浮点数的数字,则该函数不需要对字符串进行分区。

def check_float(element):
    partition = element.partition('.')
    
    if element.isdigit():
      newelement = float(element)
      print('string is valid')

    elif (partition[0].isdigit() and partition[1] == '.' and partition[2].isdigit()) or (partition[0] == '' and partition[1] == '.' and partition[2].isdigit()) or (partition[0].isdigit() and partition[1] == '.' and partition[2] == ''):
            newelement = float(element)
            print(newelement)
            print("String is also valid !")
    else:
        print("string is not valid !")

check_float('234') 

输出:

string is valid

另一方面,如果字符串包含一个浮点数,其中包含一个不能被视为数字的字符,那么该浮点数将不是一个有效的字符串。在这种情况下,有效字符串是指可以使用 float() 函数转换为浮点数的字符串。

def check_float(element):
    partition = element.partition('.')
    
    if element.isdigit():
      newelement = float(element)
      print('string is valid')

    elif (partition[0].isdigit() and partition[1] == '.' and partition[2].isdigit()) or (partition[0] == '' and partition[1] == '.' and partition[2].isdigit()) or (partition[0].isdigit() and partition[1] == '.' and partition[2] == ''):
            newelement = float(element)
            print(newelement)
            print("String is also valid !")
    else:
        print("string is not valid !")

check_float('234.rt9')     

输出:

string is not valid !

对于以指数形式表示的整数和数字以及任何数字的 Unicode 字符,isdigit() 函数也返回 true。

def is_valid_string(element):
    if element.isdigit():
        print("String is valid")
    else:
        print("String is not valid")

is_valid_string("4546")

输出:

String is valid

如果字符串只包含上面示例代码块中的数字,我们将 isdigit() 方法与一个函数一起使用,该函数返回一个肯定的消息。但是,当使用不包含数字的参数调用该函数时,该函数会打印一条否定消息,如下面的代码所示。

def is_valid_string(element):
    if element.isdigit():
        print("String is valid")
    else:
        print("String is not valid")

is_valid_string("Pal Alto")

输出:

String is not valid

因此,使用 isdigit() 函数,我们可以轻松确定字符串是否有效以及是否可以转换为浮点数。包含空格和符号的字符串不能转换为浮点数。

使用 isdigit() 方法,我们还可以确定包含空格的字符串是否有效,如下面的代码所示。

def is_valid_string(element):
    if element.isdigit():
        print("String is valid")
    else:
        print("String is not valid")

is_valid_string("$4546.343")

输出:

String is not valid

包含任何空格的字符串同样不是有效字符串,不能转换为浮点数。

def is_valid_string(element):
    if element.isdigit():
        print("String is valid")
    else:
        print("String is not valid")

is_valid_string("45 8")

输出:

String is not valid

复数在 Python 中的三种内置数字数据类型中同等重要。我们还可以在 complex() 函数旁边使用 float() 函数来确定包含复数的字符串是否也可以转换为浮点数据类型。

complex() 函数将整数和字符串转换为复数。因此使用这两个函数,我们可以确认包含字符序列的字符串不能转换为浮点数,也不能转换为复数。

这些函数还可以检查包含复数的字符串是否可以转换为浮点数,如下面的代码所示。

def is_valid_string(str):
    try:
        float(str)
        return True
    except ValueError:
        try:
            complex(str)
        except ValueError:
            return False

print(is_valid_string('hello'))

输出:

False

相反,由整数或浮点数组成的字符串可以转换为浮点数和复数。因此,如果我们传递具有上述描述的参数,该函数可能会返回 True

def is_valid_string(str):
    try:
        float(str)
        return True
    except ValueError:
        try:
            complex(str)
        except ValueError:
            return False

print(is_valid_string('456.45'))

输出:

True

由整数组成的字符串同样有效,可以转换为浮点数和复数。因此,我们也会得到一个 True 语句。

def is_valid_string(str):
    try:
        float(str)
        return True
    except ValueError:
        try:
            complex(str)
        except ValueError:
            return False

print(is_valid_string('456'))

输出:

True

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Django 中的 Slug

发布时间:2023/05/04 浏览次数:173 分类:Python

本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。

Django ALLOWED_HOSTS 介绍

发布时间:2023/05/04 浏览次数:181 分类:Python

本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。

Django 中的 Select_related 方法

发布时间:2023/05/04 浏览次数:129 分类:Python

本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。

在 Django 中上传媒体文件

发布时间:2023/05/04 浏览次数:198 分类:Python

在本文中,我们简要介绍了媒体文件以及如何在 Django 项目中操作媒体文件。

Django 返回 JSON

发布时间:2023/05/04 浏览次数:106 分类:Python

在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。

在 Django 中创建对象

发布时间:2023/05/04 浏览次数:59 分类:Python

本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。

在 Django 中为多项选择创建字段

发布时间:2023/05/04 浏览次数:75 分类:Python

在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便