測試字串的組成

Python 的 str 型別還具有許多可用於評估字串內容的方法。這些是 str.isalphastr.isdigitstr.isalnumstr.isspace。資本化可以通過 str.isupperstr.islowerstr.istitle 進行測試。

str.isalpha

str.isalpha 不帶引數,如果給定字串中的所有字元都是字母,則返回 True,例如:

>>> "Hello World".isalpha()  # contains a space
False
>>> "Hello2World".isalpha()  # contains a number
False
>>> "HelloWorld!".isalpha()  # contains punctuation
False
>>> "HelloWorld".isalpha()
True

作為邊緣情況,當與 "".isalpha() 一起使用時,空字串的計算結果為 False

str.isupperstr.islowerstr.istitle

這些方法測試給定字串中的大小寫。

str.isupper 是一個方法,如果給定字串中的所有字元都是大寫,則返回 True,否則返回 False

>>> "HeLLO WORLD".isupper()
False
>>> "HELLO WORLD".isupper()
True
>>> "".isupper()
False

相反,str.islower 是一種方法,如果給定字串中的所有字元都是小寫,則返回 True,否則返回 False

>>> "Hello world".islower()
False
>>> "hello world".islower()
True
>>> "".islower()
False

如果給定的字串是標題的,則 str.istitle 返回 True; 也就是說,每個單詞都以大寫字元開頭,後跟小寫字元。

>>> "hello world".istitle()
False
>>> "Hello world".istitle()
False
>>> "Hello World".istitle()
True
>>> "".istitle()
False

str.isdecimalstr.isdigitstr.isnumeric

str.isdecimal 返回字串是否為十進位制數字序列,適合表示十進位制數。

str.isdigit 包括不適合表示十進位制數的形式的數字,例如上標數字。

str.isnumeric 包括任何數字值,即使不是數字,例如 0-9 範圍之外的值。

            isdecimal    isdigit   isnumeric

12345        True        True       True
១2߃໔5        True        True       True
①²³🄅₅       False       True       True
⑩⒓          False       False      True
Five         False       False      False

Bytestrings(Python 3 中的 bytes,Python 2 中的 str),僅支援 isdigit,它僅檢查基本的 ASCII 數字。

str.isalpha 一樣,空字串的計算結果為 False

str.isalnum

這是 str.isalphastr.isnumeric 的組合,特別是如果給定字串中的所有字元都是字母數字,則它會計算為 True ,即它們由字母數字字元組成:

>>> "Hello2World".isalnum()
True
>>> "HelloWorld".isalnum()
True
>>> "2016".isalnum()
True
>>> "Hello World".isalnum()  # contains whitespace
False

str.isspace

如果字串僅包含空格字元,則評估為 True

>>> "\t\r\n".isspace()
True
>>> " ".isspace()
True

有時字串看起來但我們不知道是否因為它只包含空格或根本沒有字元

>>> "".isspace()
False

為了涵蓋這種情況,我們需要額外的測試

>>> my_str = ''
>>> my_str.isspace()
False
>>> my_str.isspace() or not my_str
True

但是測試字串是空的還是隻包含空格字元的最短方法是使用 strip (沒有引數它會刪除所有前導和尾隨空白字元)

>>> not my_str.strip()
True