我正在做一些功课,这个问题问这个数学题的字符串中有多少十六进制数字 现在我可以做无聊的方式并计算每个十六进制数字,或者我可以使用很棒的可能已经存在的函数来使用 python :) 为我完成它
"44789C7FC5C3F5C7C5A51FB697F3C9B28B2CD67FZ"
例如,在这个字符串中,是否有一个函数可以告诉十六进制数字的数量? 还有一个可以告诉我位数的函数?
是的,您可以使用filter()
删除所有不是十六进制数字的字母。string
模块包含一些方便的常量,包括一个包含所有十六进制数字的字符串。然后,您可以使用len()
和list()
查找剩余的字符数:
len(list(filter(lambda x: x in string.hexdigits, data.lower())))
您还可以使用sum()
和map()
将每个字符映射到True
/False
值,具体取决于该字符是否为十六进制数字,然后使用sum()
将True
解释为1
并将False
解释为0
:
sum(map(lambda x: x in string.hexdigits, data.lower()))
例如:
import string
data = "44789C7FC5C3F5C7C5A51FB697F3C9B28B2CD67FZ"
print(len(list(filter(lambda x: x in string.hexdigits, data.lower()))))
print(sum(map(lambda x: x in string.hexdigits, data.lower())))
输出:
40
40
你可以做这样的事情:
>>> s='agth123AFz04bCD'
>>> import re
>>> re.findall(r'[0-9A-Fa-f]',s)
['a', '1', '2', '3', 'A', 'F', '0', '4', 'b', 'C', 'D']
>>> len(re.findall(r'[0-9A-Fa-f]',s))
11