我有一个二进制字符串,比如'01110000',想要返回前面的零的数量,而不用写for循环。请问有没有办法做到这一点?最好的方法是如果字符串立即以'1'开头,也能返回0。
我有一个二进制字符串,比如'01110000',想要返回前面的零的数量,而不用写for循环。请问有没有办法做到这一点?最好的方法是如果字符串立即以'1'开头,也能返回0。
如果你确信这是一个“二进制字符串”:
input = '01110000'
zeroes = input.index('1')
更新:当只有“前导”零时它会出现问题。
一种处理全零情况的替代形式。
zeroes = (input+'1').index('1')
还有一种方法:
In [36]: s = '01110000'
In [37]: len(s) - len(s.lstrip('0'))
Out[37]: 1
1
。这使它变得更加通用,尽管对于您的特定问题无关紧要。#
开头来表示一个标题。 - WinEunuuchs2Unixx = '01110000'
leading_zeros = len(x.split('1', 1)[0])
这将字符串分成第一个'1'之前的所有内容和之后的所有内容,然后计算前缀的长度。 split
的第二个参数只是一种优化方式,表示要执行的拆分次数,这意味着函数在找到第一个'1'后就会停止拆分,而不是在所有出现的位置上进行拆分。如果性能不重要,您可以直接使用 x.split('1')[0]
。
我会使用:
s = '00001010'
sum(1 for _ in itertools.takewhile('0'.__eq__, s))
如果你知道它只是0或1:
x.find(1)
"0012300" == str(int("0012300"))
我正在使用 has_leading_zero = re.match(r'0\d+', str(data))
作为解决方案,它接受任何数字并将 0
视为一个有效的数字而不是带有前导零的数字
关于re
模块怎么样?
a = re.search('(?!0)', data)
那么a.start()
就是位置。