2011-02-03 13 views
2

あるインデックス範囲内にピリオドが含まれている場合、Aの新しい値を見つけるプログラムを実行しようとしています。問題は、検索のドメインを決定するためには、単語をリスト内で分離する必要があります(例えば、 'A'、 'B'、 'C​​'、 'D'、 'E' 「F」「G」「A」「B」「C」「D」「E」「F」「G」)のいずれかである。目的は、最初のAを見つけるプログラムを取得し、小さなリスト( 'A B. C D')を検索して '。'を求めます。変数が見つかった場合は、変数を次のAのインスタンスに代入します。すべてのコードはこれまでのところ動作しますが、 '。' in演算子を使用しています。なぜなら、 'B'として扱っているからです。 。 'B'は知られていないので、これはアプリケーションでは機能しません。in演算子を含む部分文字列をPythonの単語リストから検索する

「。」を検索する方法はありますか?未知のテキストの隣に表示されても?私は正規表現の使用を試みましたが、それはうまく応答していません。これはおそらく私の一部のエラーの結果です。

words = 'A B. C D E F G A B C D E F G A B C D E F G A B C D E F G' 
corpus = words.split() 
index_A = corpus.index('A') 
while '.' in corpus[index_A : index_A + 3]: 
    # This does not seem to be picking up the '.' in 'b.' in isolation. It will find 
    # 'B.' but not '.' from corpus. 
    index_A = corpus.index('A', index_A+1) 
+2

あなたは何を意味するのかよく分かりません。 "未知のテキスト"とは何で、なぜそうでないのか " foo'の仕事で? :)私はいくつかの例のコードや入力と期待された出力が少し助けることができると思います。 – Skurmedel

+0

私は彼がstrオブジェクトを親オブジェクトに移動させたいと思うでしょう。 – jbcurtin

+0

@bbcurtin:うーん...ええ。私が理解していないのは、( 'A B. C D')リストです。これは、期間と移動データを見つけた結果ですか? – Skurmedel

答えて

1

これは、 '。'を探します。エントリーの最後に。

words = 'A B. C D E F G A B C D E F G A B C D E F G A B C D E F G' 
    corpus = words.split() 
    for item in corpus: 
    if item.endswith('.'): 
    #logic 
+0

これはforループと同じように動作するようですが、読みやすくなります。私はちょっと驚いたことがあります。私はBIFのリストをチェックすべきだったと思います。 –

1

ここでは正規表現は必要ありませんが、正規表現は機能します。それは特別なので、エスケープすることを忘れないでください。あなたのエスケープをエスケープするために生の文字列を使用することを忘れないでください。 :)

あなたのwhileループの問題は、「。」と全く同じ項目を探していることです。そのスライスではなく、 "。"を含むスライス内の項目です。

while any("." in x for x in corpus[index_A : index_A + 3]): 
+0

同じことを入力していました。 –

+0

ご迷惑をおかけして申し訳ございません。他のコメントについては、コードを書いていないことをお詫び申し上げます。ここにあります。コーパス= words.split()index_A = corpus.index( 'A')while '。' in corpus [index_A:index_A + 3]:#この行は '。'を取得していないようです。 「b」で。孤立していると、「B」を見つけるでしょう。だがしかし '。' from corpus index_A = corpus.index( 'A'、index_A + 1) –

+1

@MichaelRauh:そのコードを質問に移動しました。私はあなたを正しく理解してくれることを望みます。 –

1

ここで文章を解析しているようです。これを行うにはNatural Language Toolkit for Pythonの使用を検討しましたか?

+0

私は実際にこれが存在するのを知らなかった。これを指摘してくれてありがとう! –

関連する問題