2016-06-28 20 views
-1

私は、ユーザーが単語を入力した後に文字列を入力する関数を書いています。この関数は、すべての出現とその単語の文字列内の位置を識別します(実際には途中までリストに変換されます)。文字列/リスト内の単語の位置を見つける方法は?

私が現在行っているコードは、単語の最初の出現を特定するだけです。また、単語が文字列の最初の単語である場合は単語を識別せず、空のリストを返します。また、最初の単語がゼロとしてカウントされるので、単語の実際の位置 - 1を示します。

私はこの問題を2つの方法で抑制しようとしました。最初のものはaString.insert(0, ' ')であり、2番目のものはfor i in __: if i == int: i += 1です。これらのどちらも機能しません。

また、.insertを実行しているときに、スペースの代わりにスペースを入れてみましたが(この部分は印刷されません)、動作しませんでした。ここで

は、コードは次のとおりです。

def wordlocator(word): 
    yourWord = word 
    print("You have chosen the following word: " +yourWord) 
    aString = input("What string would you like to search for the given word?") 
    aString = aString.lower() 
    aString = aString.split() 
    b = [(i, j) for i, j in enumerate(aString)] 
    c = [(i, x) for i, x in b if x == yourWord] 
    return c 

私が探している出力は、誰かがやった場合...

wordlocator("word") 
"please input a string generic message" "that is a word" 
"4, word" 

は現在、それが動作しますが、それは"3, word"を印刷したいということです。文字列が"that is a word and this is also a word"だった場合は、それ以降の発生は無視されます。"word" 編集:もっと簡単なコードを使いました。あなたの助けをありがとう!リスト内包は、あなたが探しているだけの試合で濾過することができることを

def wordlocator(word): 
    yourWord = word 
    print("You have chosen the following word: " +yourWord) 
    aString = raw_input("What string would you like to search for the given word?") 
    aString = aString.lower() 
    aString = aString.split() 
    b = [(i+1, j) for i, j in enumerate(aString) if j == yourWord.lower()] 

    return b 

print wordlocator('word') 

ノート:

+1

* "最初の単語は次のとおりです。ゼロとしてカウントされます "* - はい、Pythonのインデックスは0ベースです。ただし、別の値から始まる 'enumerate'を選択することもできます - そのドキュメントを参照してください。 – jonrsharpe

+1

Python(私が使用したすべての言語では)インデックスがゼロになっていると思います。実数ポジションが必要な場合は、1を追加するだけです。最初の使用方法を取得する場合は、以下の回答ごとにリストの理解度を修正するか、「利回り」を調べます。 //stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python) – Lost

+0

@Lost私が正しく覚えていれば、Cobolは配列に対して1つのインデックスを使用します。 Op、私は1つのオカレンスしか見つけられないという問題を再現できません。コードはうまく動作します。しかし、おそらく問題は、ユーザが句読点を入力する場合です: ''word'!= 'word。' != 'word、' ' – polku

答えて

1

はこれを試してみてください。インデックスは、それが重要な場合は、1つでオフになって、

に理解してXに新しいテストを1を追加することを

What string would you like to search for the given word?This word is not that word is it? 
[(2, 'word'), (6, 'word')] 

注: あなたが持っている実際に私はちょうど私がこれを取得

それを変更しました単語 与えられた単語をどのように検索しますか?単語は単語です [(1、 '単語')]

+0

こんにちは、返信ありがとう!私は少し遅れてしまいました。とても遅くて、すみませんでした。 :) 再度、感謝します!! :) – chunkydumpling

+0

@chunkydumplingあなたは答えが好きかどうかを確認することができます。問題ない。喜んで –

+0

こんにちは、私はちょうどこれを試したことがあり、それはまだ単語の最初の発生と動作しません?私は何をすべきだと思いますか?例えば、 "wordlocator(" word ")\ n何文字列か..."これは単語です" \ n "[]" – chunkydumpling

関連する問題