私はこの文字列を持っています:11000000101010000000010000000000
0後ろから打って止まるまで sを数えて、最後1に s の総数を求めたいと思います。0この特定のケースでは、答えとして私に与えるでしょう10。
どんな助けでも大歓迎です。
私はこの文字列を持っています:11000000101010000000010000000000
0後ろから打って止まるまで sを数えて、最後1に s の総数を求めたいと思います。0この特定のケースでは、答えとして私に与えるでしょう10。
どんな助けでも大歓迎です。
を使用rindex()して最後のインデックスを取得し、それを最大インデックス ( )1から差し引くことができます。len(s) - 1
>>> s = '11000000101010000000010000000000'
>>> len(s) - s.rindex('1') - 1
10
>>> s = '11000000101010000000010000000000'
>>> len(s.rsplit('1', 1)[-1])
10
正規表現でそれを行う方法は次のとおりです。
>>> s = '11000000101010000000010000000000'
>>> match = re.search('0*$', s)
>>> match.end() - match.start()
10
質問はすでに回答されていることは知っていますが、これを行うことができるさらに別の方法を追加すると思いました。
itertools.takewhile文字列の逆に使用できtakewhile、数字は「1」ではありません。生成されたすべての 1 に合計を適用すると、答えが得られます。
>>> test = "11000000101010000000010000000000"
>>> sum(1 for x in takewhile(lambda i: i != '1', test[::-1]))
10
binary_str = "11000000101010000000010000000000"
import re
match_obj = re.search(r"0*$", binary_str)
if match_obj:
print len(match_obj.group())