有没有办法具体验证这一点?我试图解决一个编码问题,但似乎其中一个测试用例(不透露给我)认为这是错误的。在哪种情况下,这不是真的?
答案 0 :(得分:3)
有时isalpha
和isdigit
都会返回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