2017-05-02 6 views
2

私はこのような文字列がある場合:ABCDE奇数番号の文字列から文字を削除するにはどうすればよいですか?

を私は時間(ABは、その後、CD)で2つの文字を読み、タプルまたは2の中に読み取ることができない残りの文字(E)を削除したいです。どのようにそれらの文字を削除するのですか?

私がこれまでに以下のコードを持っている:

s = 'ABCDE' 

for (first, second) in zip(s[0::2], s[1::2]): 
    if not first or not second: 
     if first: 
       s.replace(first, '') 
       continue 
     else: 
       s.replace(second, '') 
       continue 
    print first, second 

print s 

良いのですが、私は場合をどうしようとしていますためのループでは、余分なEを削除するこのコードを印刷(A BC Dを)ステートメント。タプルの変数firstまたはsecondのいずれかが空の文字列であるかどうかをチェックし、元のs変数から空の文字列でないものを削除します。

上記のコードは機能していないようです。誰かが別の提案を持っているのですか、それを改善する方法はありますか?

+0

私は、最初または2番目が空の文字列である場合に、プログラムが 'E 'になるときにループに入ることもないことに気付きました。これを行う別の方法はありますか? – CapturedTree

+3

どうして違うやり方をしたいのですか?私は 'E 'を落としたいと思っていましたし、' zip'はあなたのために自動的に行います。 –

+1

元の文字列 's'から削除します。最後に文字列 's'を出力すると' ABCDE'に 'E'が入ります。 – CapturedTree

答えて

4

あなたは、文字列の長さが奇数である場合には最後の文字を削除したい場合は:今

word = "ABCDE" 

if len(word) % 2 == 1: 
    word = word[:-1] 

あなたはAの文字2を読みたい場合は時間は、ここでより本能的な方法です:

後者はあなたのために最後の文字をドロップします。

+0

その時に3文字を読みたいなら私はちょうど 'print(word [3 * i:3 * i + 3])'?しかし、最初の部分では、どのように文字列を3の倍数にするのですか? 'もしlen(単語)%3!= 0:...'? – CapturedTree

+0

@ 1290うん、そうだ。範囲(len(word)// n):print(単語[n * i:n *(i + 1)) 'で' for for 'を実行できます。最初の部分は本当に 'if len(word)%n!= 0'でなければなりません。 –

0
str = "ABCDE" 

for i, k in zip(str[::2], str[1::2]): 
    print(i + k) 

出力:

AB 
CD 
関連する問題