我有这个字符串:11000000101010000000010000000000
我想从后面开始计算0
,直到我点击1
并停在那里,确定最后0
的总数。在这种特殊情况下,它会给我10
作为答案。
非常感谢任何帮助。
答案 0 :(得分:6)
您可以使用rindex()
获取上一个1
的索引,然后从最大索引(len(s) - 1
)中减去该索引:
>>> s = '11000000101010000000010000000000'
>>> len(s) - s.rindex('1') - 1
10
答案 1 :(得分:5)
>>> s = '11000000101010000000010000000000'
>>> len(s.rsplit('1', 1)[-1])
10
答案 2 :(得分:2)
以下是如何在正则表达式中执行此操作,因为为什么不呢!
>>> s = '11000000101010000000010000000000'
>>> match = re.search('0*$', s)
>>> match.end() - match.start()
10
答案 3 :(得分:1)
我知道问题已经回答,但我想我会添加另一种方法,你可以做到这一点。
您可以在字符串的反面使用itertools.takewhile
,takewhile
数字不是'1'。对所有生成的1应用一笔金额,然后得到答案。
>>> test = "11000000101010000000010000000000"
>>> sum(1 for x in takewhile(lambda i: i != '1', test[::-1]))
10
答案 4 :(得分:0)
你可以:
在相应的整数上执行10次连续除法,就像它在基数10中一样。
使用字符串操作查找最后的1并记录其后的所有内容
使用正则表达式在结尾处获取0并计算它们
查找转换为二进制的操作,并执行两次连续分割。
答案 5 :(得分:0)
binary_str = "11000000101010000000010000000000"
import re
match_obj = re.search(r"0*$", binary_str)
if match_obj:
print len(match_obj.group())