1

私はこの文字列を持っています:11000000101010000000010000000000

0後ろから打って止まるまで sを数えて、最後1に s の総数を求めたいと思います。0この特定のケースでは、答えとして私に与えるでしょう10

どんな助けでも大歓迎です。

4

6 に答える 6

6

を使用rindex()して最後のインデックスを取得し、それを最大インデックス ( )1から差し引くことができます。len(s) - 1

>>> s = '11000000101010000000010000000000'
>>> len(s) - s.rindex('1') - 1
10
于 2013-09-24T22:47:32.707 に答える
5

使用str.rsplit()してstr.count()

>>> s = '11000000101010000000010000000000'
>>> len(s.rsplit('1', 1)[-1])
10
于 2013-09-24T22:46:57.277 に答える
2

正規表現でそれを行う方法は次のとおりです。

>>> s = '11000000101010000000010000000000'
>>> match = re.search('0*$', s)
>>> match.end() - match.start()
10
于 2013-09-25T01:35:16.120 に答える
1

質問はすでに回答されていることは知っていますが、これを行うことができるさらに別の方法を追加すると思いました。

itertools.takewhile文字列の逆に使用できtakewhile、数字は「1」ではありません。生成されたすべての 1 に合計を適用すると、答えが得られます。

>>> test = "11000000101010000000010000000000"
>>> sum(1 for x in takewhile(lambda i: i != '1', test[::-1]))
10
于 2013-09-24T23:34:32.500 に答える
0
binary_str = "11000000101010000000010000000000"

import re

match_obj = re.search(r"0*$", binary_str)

if match_obj:
    print len(match_obj.group())
于 2013-09-26T18:17:19.043 に答える