Python 为什么根据string.hexdigits()检查空字符串会返回有效值?

Python 为什么根据string.hexdigits()检查空字符串会返回有效值?,python,string,python-2.7,hex,Python,String,Python 2.7,Hex,我有两个函数,一个用于清除输入文本,另一个用于测试cleantext是否为十六进制。当向cleaner函数传递一个包含所有空格的字符串时,它会去掉空格,留下一个空字符串 我不明白为什么string.hexdigits()不会在这个空字符串上呕吐,让它作为有效的十六进制传递 def testHex(ciphertext): cleancipher = cleanHex(ciphertext) if all(h in string.hexdigits for h in cleanci

我有两个函数,一个用于清除输入文本,另一个用于测试cleantext是否为十六进制。当向cleaner函数传递一个包含所有空格的字符串时,它会去掉空格,留下一个空字符串

我不明白为什么string.hexdigits()不会在这个空字符串上呕吐,让它作为有效的十六进制传递

def testHex(ciphertext):
    cleancipher = cleanHex(ciphertext)
    if all(h in string.hexdigits for h in cleancipher):
        print('String is valid hex.')
    else:
        print('String is not valid hex.')

def cleanHex(ciphertext):
    return(ciphertext.replace(' ', '').replace('0x', '').replace(':', '').replace('\\x', '').strip())

testHex
输出
字符串是有效的十六进制。
用于空字符串,因为
all
返回
True
用于空iterables

是的

全部(可编辑)

如果iterable的所有元素都为True(或者 iterable是空的)


为什么string.hexdigits()不会呕吐
-实际上它会<代码>字符串。hexdigits是一个字符串,您不能调用它并在尝试时得到错误。人们对向下投票很残酷,所以即使这不在搜索中。现在是结束问题。编辑:没有意识到我不能在板上有答案的情况下删除。我想你还是不要投我的票吧。谢谢社区。@StefanPochmann我希望它会因为不是一个六位数而呕吐,因为它不是一个字符串。提交的答案为我澄清了这一点。你刚才说的毫无意义。@StefanPochmann非常感谢你的帮助。谢谢你,我当时正忙着解析字符串。hexdigits()文档,我没想到要全部检查()。当计时器在10分钟内过期时,我将接受。