如何檢查字串是否僅包含十進位制字元?


字串是一組字元,可用於表示單個單詞或整個句子。字串在 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

在下面給出的示例中,我們以 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

更新於:2022年10月19日

5K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告