我有這個字符串:11000000101010000000010000000000
如何計算結束0的二進制字符串
我想算0
首發在後面,直到我打1
和停在那裏,確定在的0
S中的總數結束。在這個特殊情況下,它會給我10
作爲答案。
任何幫助非常感謝。
我有這個字符串:11000000101010000000010000000000
如何計算結束0的二進制字符串
我想算0
首發在後面,直到我打1
和停在那裏,確定在的0
S中的總數結束。在這個特殊情況下,它會給我10
作爲答案。
任何幫助非常感謝。
>>> s = '11000000101010000000010000000000'
>>> len(s.rsplit('1', 1)[-1])
10
你既可以:
在相應的整數10進行連續分裂拍攝,就好像是在基地10
使用字符串操作來找到最後1,並採取一切後
使用正則表達式來獲得在0年底盡數
找操作轉換爲二進制和兩個執行連續分裂。
我知道這個問題已經回答了,但我想我會添加另一種方式,你可以做到這一點。
你可以在字符串和takewhile
數字的反向使用itertools.takewhile
不是「1」。對所有生成的1應用一個總和,你會得到答案。
>>> test = "11000000101010000000010000000000"
>>> sum(1 for x in takewhile(lambda i: i != '1', test[::-1]))
10
這裏是如何在正則表達式中做到這一點,因爲爲什麼不呢!
>>> s = '11000000101010000000010000000000'
>>> match = re.search('0*$', s)
>>> match.end() - match.start()
10
這是有點我的想法:爲什麼不使用拉姆達和幾個發電機來回答這個問題! – erewok
binary_str = "11000000101010000000010000000000"
import re
match_obj = re.search(r"0*$", binary_str)
if match_obj:
print len(match_obj.group())
完美,這解決了這個問題對我來說。謝謝。 –
@HundurinnNero沒問題:) – TerryA
這是更好地使用'LEN(S)-s.rfind( '1') - 1',對不對? – justhalf