Python 如何检查一个字符串是否只包含十进制字符

Python 如何检查一个字符串是否只包含十进制字符

字符串是一个包含一个单词或整个句子的字符组。在Python中使用字符串非常简单,因为它们不需要显式声明并且可以使用或不使用指定符号进行定义。

在Python中,字符串由名为”string”的类表示,该类提供了几个内置方法来操作和访问字符串。

在本文中,我们将重点介绍如何在Python中检查一个字符串是否只包含十进制字符。

使用isdigit()函数

一种实现这一目标的方法是使用内置的字符串函数 isdigit() 。该函数将输入作为字符串,并且如果字符串中的所有字符都是数字,则返回true,否则返回false。该函数的主要缺点是,如果存在任何十进制字符或任何负数数字,则返回False。

示例1

在下面给出的程序中,我们输入2个字符串,并使用 isdigit() 方法检查它们是否只包含十进制字符。

str1 = "12345"
str2 = "1234@#"

print("Checking if the string '",str1,"' has only decimal characters")
print(str1.isdigit())

print("Checking if the string '",str2,"' has only decimal characters")
print(str2.isdigit())

输出

以上示例的输出是:

("Checking if the string '", '12345', "' has only decimal characters")
True
("Checking if the string '", '1234@#', "' has only decimal characters")
False

示例2

在下面的示例中,我们以两个字符串作为输入,这些输入包含一个小数点和一个负号,并使用isdigit()方法检查它们是否为十进制字符。

str1 = "123.45"
str2 = " 12345"

print("Checking if the string '",str1,"' has only decimal characters")
print(str1.isdigit())

print("Checking if the string '",str2,"' has only decimal characters")
print(str2.isdigit())

输出

上面示例的输出是:

("Checking if the string '", '123.45', "' has only decimal characters")
False
("Checking if the string '", ' 12345', "' has only decimal characters")
False

解决上述缺点的解决方案

为了解决上述方法中的缺点,让我们创建一个用户定义的函数来克服由 isdigit() 引起的缺点。为了克服十进制数的缺点,我们将在遇到‘.’时使用split函数将字符串拆分。为了克服负数的缺点,我们将使用strip函数剥离‘ ’字符。

示例

在下面给出的示例中,我们编写了一个内置函数,使用 strip()split() 函数来消除‘.’和‘ ’,并检查字符串是否仅包含十进制字符。

def isfloat(str):
   s1 = str.lstrip(' ')
   s2 = s1.split('.')
   return all(n.isdigit() for n in s2) and len(s2) <= 2

str1 = "123.45"
str2 = " 12345"

print("Checking if the string '",str1,"' has only decimal characters")
print(isfloat(str1))

print("Checking if the string '",str2,"' has only decimal characters")
print(isfloat(str2))

输出

上述示例的输出为:

("Checking if the string '", '123.45', "' has only decimal characters")
True
("Checking if the string '", ' 12345', "' has only decimal characters")
True

使用正则表达式

另一种实现方法是使用正则表达式。正则表达式 ” ^\d+?\\.\d+?$ ” 用于检查是否只包含数字。正则表达式函数 match 用于检查。

示例

在下面的示例中,我们使用正则表达式来判断给定的字符串是否只包含十进制字符。

import re
str1 = "123.45"
str2 = "123@45"

print("Checking if the string '",str1,"' has only decimal characters")
print(bool(re.match("^\d+?\.\d+?", str1)))

print("Checking if the string '",str2,"' has only decimal characters")
print(bool(re.match("^\d+?\.\d+?", str2)))

输出

上述示例的输出为,

("Checking if the string '", '123.45', "' has only decimal characters")
True
("Checking if the string '", '123@45', "' has only decimal characters")
False

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程