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