本篇我们学习如何判断字符串中的内容类型,包括 isdigit()、isdecimal()、isnumeric()、isalpha() 以及 isalnum() 方法。

字符串 isdigit() 方法

如果字符串至少包含一个字符,而且所有字符都数字,isdigit() 方法返回 True;否则,返回 False。isdigit() 方法的语法如下:

str.isdigit()

如果字符串中只包含 0-9 的数字,isdigit() 方法返回 True。如果字符串包含任何小数点、减号或者加号,isdigit() 返回 False。

另外,包含数字上标的字符串,例 10²,isdigit() 方法也会返回 True。

以下示例使用 isdigit() 方法检查字符串“100”中是否只包含数字字符:

quantity = '100'
print(quantity.isdigit())

输出结果如下:

True

以下示例返回了 False:

price = '9.99'

print(price.isdigit())
False

以下示例返回了 True,因为 Unicode 字符 0 和 2 属于数字:

x = "\u0030"  # unicode for 0
y = "\u00B2"  # unicode for ²

print(x.isdigit())
print(y.isdigit())

输出结果如下:

True
True

以下示例返回了 False,因为字符串为空:

empty = ''

print(empty.isdigit())
False

字符串 isdecimal() 方法

如果字符串至少包含一个字符,而且所有字符都是十进制字符,isdecimal() 方法返回 True;否则,返回 False。isdecimal() 方法的语法如下:

str.isdecimal()

十进制字符是指组成以 10 为基数的数字字符。上标属于数字,但不属于十进制字符,因此对于包含上标的字符串,isdecimal() 方法将会返回 False。

同理,罗马数字、货币分子以及分数都属于数字字符,而不属于十进制字符。

以下示例使用 isdigit() 方法检查字符串“150”中是否只包含十进制字符:

quantity = "150"
print(quantity.isdecimal())

输出结果如下:

True

以下示例返回了 False,因为字符“.”不属于十进制字符:

price = "99.9"

print(price.isdecimal())
False

字符串 isnumeric() 方法

如果字符串至少包含一个字符,而且所有字符都是数字字符,isnumeric() 方法返回 True;否则,返回 False。isnumeric() 方法的语法如下:

str.isnumeric()

与 isdigit() 方法类似,如果字符串中只包含 0-9 的数字,isnumeric() 方法返回 True。

另外,对于非英语语言中的数字字符,isnumeric() 方法也会返回 True。例如,在中文里的 1、2、3 可以用一、二、三表示,所以下面的示例返回了 True:

result = '一二三'.isnumeric()

print(result)
True

不过,以下 isdigit() 返回了 False:

result = '一二三'.isdigit()

print(result)
False

这是 isnumeric() 和 isdigit() 最主要的区别。

字符串“99.99”和“-10”都不属于数字字符,因此以下示例返回了 False:

price = '99.99'
print(price.isnumeric())

discount = '-10'
print(discount.isnumeric())

输出结果如下:

False
False

字符串 isalpha() 方法

如果字符串至少包含一个字符,而且所有字符都是字母,isalpha() 方法返回 True;否则,返回 False。isalpha() 方法的语法如下:

str.isalpha()

字母字符是指 Unicode 字符集中被定义为字母的所有字符。

以下示例使用 isalpha() 方法检查字符串“John”中是否只包含字母字符:

name = 'John'
print(name.isalpha())

输出结果如下:

True

以下示例返回了 False,因为字符串“Jane Doe”中包含了一个空格:

name = 'Jane Doe'

print(name.isalpha())
False

一般来说,如果字符串中包含任何空白字符, isalpha() 方法将会返回 False。

字符串 isalnum() 方法

如果字符串至少包含一个字符,而且所有字符都是字母或者数字,isalnum() 方法返回 True;否则,返回 False。isalnum() 方法的语法如下:

str.isalnum()

从功能上来讲,如果以下任何方法返回 True,表示字符串只包含字母或者数字字符:

  • str.isalpha()
  • str.isnumeric()
  • str.isdecimal()
  • str.isalpha()

以下示例使用 isalnum() 方法判断字符串“Python3”是否只包含字母或者数字字符:

version = 'Python3'
result = version.isalnum()

print(result)

输出结果如下:

True

以下示例返回了 False,因为字符串“Python 3”中包含了一个空格:

version = 'Python 3'
result = version.isalnum()

print(result)
False

总结

  • isdigit() 方法用于检查字符串是否只包含数字字符。
  • isdecimal() 方法用于检查字符串是否只包含十进制字符。
  • isnumeric() 方法用于检查字符串是否只包含数字字符。
  • isalpha() 方法用于检查字符串是否只包含字母。
  • isalnum() 方法用于检查字符串是否只包含字母或者数字字符。