测试字符串的组成

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