Python 方法查找字符串中的前导零

11 投票
8 回答
15265 浏览
提问于 2025-04-17 13:34

我有一个二进制字符串,比如说 '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')

撰写回答