2017-03-18 6 views
-1

繰り返し文字を変数に置き換える文字カウンタを再起動する最善の方法を見つけることに問題があります。私のコードはそうそうです。Python:反復する文字ループをカウントする

 

file = rf.read() 
    ret = '' 
    for k, v in groupby(s): 
     x = '0' 
     chunk = list(v) 
     cnt = len(chunk) 


     if k == x and cnt == 2: 
      el = 'B' 
     elif k == x and cnt == 3: 
      el = 'C' 
     else: 
      el = ''.join(chunk) 
     ret += el 

数が3以上であるのであれば、私は再度の上にカウンターを開始、これらの文字の繰り返しのためにCを入れてカウンターをwan't。数字がかなり大きくなる可能性があるので、残りの関数を使用すると質問にはなりません。ちょうど私が持っている最高の番号とそれを置き換え、カウンターを再起動するようなコードを探しています。 xが12回を繰り返している場合

 

Elif k == x and cnt >= 3: 
     "print C for those 3 characters then start count over" 

ので出力は、繰り返し文字を見つけ、それが奇数のランド場合ので、それを行うための最善の方法になり分割する場合はわからない、CCCCのようになります。

+1

ちょうどあなたがElif'が等しくない_'elif'_を行い、 '、知っているように。 –

+2

正確な仕様を抽出するためにコードを凝視しないでください。入力と期待される出力の明白で具体的な例と、どのようなルール/仕様が出力につながったのかを私たちに教えてください。私はあなたがこの問題をエレガントに解決する方法をいくつか考えていますが、透明な仕様を提供するまでは答えません。 – timgeb

答えて

0

文字列の使用はいかがですか。 数(x)は
を参照してください:Count occurrence of a character in a string

コードは次のようになります。

el = '' 
x = '0' 
file = rf.read() 
count = file.count(x) # count x in file 
if count >= 3: 
    for i in range(0, count, 3): # (start: 0, end: count, step: 3) 
     if count- i >= 3: # this makes sure that for example if count = 13 then 4 C's are printed only 
      el = el + 'C' 
print el 
関連する問題