Python:isalnum()与isdig的isaln相同吗?

时间:2016-06-11 09:43:13

标签: python string

有没有办法具体验证这一点?我试图解决一个编码问题,但似乎其中一个测试用例(不透露给我)认为这是错误的。在哪种情况下,这不是真的?

3 个答案:

答案 0 :(得分:3)

有时isalphaisdigit都会返回False,但isalnum会返回True。所以isalnum不仅仅是其他两个的组合。

>>> 'a1'.isalpha(), 'a1'.isdigit(), 'a1'.isalnum()
(False, False, True)

答案 1 :(得分:2)

从Python 3的文档:

  

str.isalnum()
  如果字符串中的所有字符都是字母数字且至少有一个字符,则返回true,否则返回false。如果下面的一个返回True,则字符c是字母数字:c.isalpha(),c.isdecimal(),c.isdigit()或c.isnumeric()。

因此它与isalpha()isdigit()不同。

答案 2 :(得分:0)

根据Python 2.7文档

  

str.isalnum()
  如果字符串中的所有字符都是字母数字且至少包含一个字符,则返回true,否则返回false。

根据Python 3.6.6文档

  

str.isalnum()
  如果字符串中的所有字符都是字母数字并且至少包含一个字符,则返回true,否则返回false。如果以下之一返回c,则字符True是字母数字:c.isalpha()c.isdecimal()c.isdigit()c.isnumeric()

以下是python v3.6.6中针对isalnum()的一些测试

>>> "alpha".isalnum()
True
>>> "alpha10".isalnum()
True
>>> "alpha%&@".isalnum()
False
>>> "alpha %&@".isalnum()
False
>>> "alpha with space".isalnum()
False

在第一次测试中,"alpha".isalnum()返回True

isalpha()测试中,结果如下:

>>> "alpha".isalpha()
True
>>> "alpha10".isalpha()
False
>>> "alpha%&@".isalpha()
False
>>> "alpha %&@".isalpha()
False
>>> "alpha with space".isalpha()
False

所以问题在于,当字符串仅包含字符时,isalnum()isalpha()都返回True

>>> "alpha".isalnum()
True
>>> "alpha".isalpha()
True