0

私は最初のスクリプトを書いていて、python を学ぼうとしています。しかし、私は立ち往生していて、これから抜け出すことができません。

ファイル名を変更するスクリプトを書いています。

私が持っているとしましょうstring = "this.is.tEst3.E00.erfeh.ervwer.vwtrt.rvwrv"

私は結果が欲しいstring = "This Is Test3 E00"

これは私がこれまでに持っているものです:

l = list(string) 

//Transform the string into list

for i in l:
    if "E" in l:
        p = l.index("E")
        if isinstance((p+1), int () is True:
            if isinstance((p+2), int () is True:
                delp = p+3
                a = p-3
                del l[delp:]

new = "".join(l)
new = new.replace("."," ")
print (new)

                

「E」のインデックスを取得し、「E」の後に2つの整数があるかどうかを確認します。次に、2 番目の整数以降をすべて削除します。

ただし、他の場所に「E」がある場合、これは機能しません。

現時点で得られる結果は次のとおりです。

これはテストです

リストの最初の「E」のインデックスを検索し、index+3 以降のすべてを削除しているためです。

私の質問は、文字列の組み合わせが存在する場合、リスト内のインデックスを取得する方法だと思います。

しかし、私は方法を見つけることができないようです。

みんな答えてくれてありがとう。私は他の方向に進んでいましたが、それも機能していません。誰かがそれが素晴らしい理由を見ることができれば。他の人が書いたことに対処するだけで、実際にやって学ぶ方がはるかに良いです:)

これは私が思いついたものです:

l の i の場合:

if i=="E" and isinstance((i+1), int ) is True:
    p = l.index(i)
    print (p)

なぜこれが機能しないのか、誰でも教えてくれます。エラーが発生します。

どうもありがとう

4

4 に答える 4

2

正規表現について聞いたことがありますか?

python のreモジュールを調べてください。ドキュメントへのリンク

基本的に、「E と 2 つの整数」に一致する「正規表現」を定義して、そのインデックスを与えることができます。

その後、Python の「Slice Notation」を使用して、保持したい文字列の一部を選択します。

次に、ピリオドをスペースに交換し、それらをタイトル ケースに入れるための文字列メソッドを確認します。str.replacestr.title

于 2013-10-21T22:19:00.337 に答える
1

簡単な方法は、正規表現を使用して、文字列としてE2 桁の基準が続くまで検索することです。s

import re
up_until = re.match('(.*?E\d{2})', s).group(1)
# this.is.tEst3.E00

次に、 を.スペースに置き換えてから、タイトルを大文字にします。

output = up_until.replace('.', ' ').title()
# This Is Test3 E00
于 2013-10-21T22:18:47.947 に答える