有没有一种简单的方法可以找到字符串中十六进制数字的数量?



我正在做一些功课,这个问题问这个数学题的字符串中有多少十六进制数字 现在我可以做无聊的方式并计算每个十六进制数字,或者我可以使用很棒的可能已经存在的函数来使用 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

相关内容

最新更新