Python 方法查找字符串中的前导零
我有一个二进制字符串,比如说 '01110000',我想要计算这个字符串前面有多少个零,而不想用循环来实现。有没有人知道怎么做?最好是能在字符串一开始就是 '1' 的时候返回 0。
8 个回答
9
这是一个简单的一行代码:
x = '01110000'
leading_zeros = len(x.split('1', 1)[0])
这段代码把字符串分成两部分:第一部分是从头到第一个'1'之前的内容,第二部分是'1'之后的内容。然后它计算第一部分的长度。第二个参数是给split
函数的一个优化,表示要进行的分割次数,这样函数在找到第一个'1'后就会停止,而不是把所有的'1'都分割掉。如果对性能要求不高,你也可以直接用x.split('1')[0]
来获取第一部分。
11
这里还有另一种方法:
In [36]: s = '01110000'
In [37]: len(s) - len(s.lstrip('0'))
Out[37]: 1
这个方法和其他解决方案不同,它实际上是计算前面的零的数量,而不是找到第一个1
。这样做让它变得更通用一些,不过对于你具体的问题来说,这一点并不重要。
12
如果你真的确定这是一个“二进制字符串”:
input = '01110000'
zeroes = input.index('1')
更新:当只有“前导”零时,它会出问题
这里有一种处理全是零的情况的替代方法。
zeroes = (input+'1').index('1')