私は、ユーザーが単語を入力した後に文字列を入力する関数を書いています。この関数は、すべての出現とその単語の文字列内の位置を識別します(実際には途中までリストに変換されます)。文字列/リスト内の単語の位置を見つける方法は?
私が現在行っているコードは、単語の最初の出現を特定するだけです。また、単語が文字列の最初の単語である場合は単語を識別せず、空のリストを返します。また、最初の単語がゼロとしてカウントされるので、単語の実際の位置 - 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')
ノート:
* "最初の単語は次のとおりです。ゼロとしてカウントされます "* - はい、Pythonのインデックスは0ベースです。ただし、別の値から始まる 'enumerate'を選択することもできます - そのドキュメントを参照してください。 – jonrsharpe
Python(私が使用したすべての言語では)インデックスがゼロになっていると思います。実数ポジションが必要な場合は、1を追加するだけです。最初の使用方法を取得する場合は、以下の回答ごとにリストの理解度を修正するか、「利回り」を調べます。 //stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python) – Lost
@Lost私が正しく覚えていれば、Cobolは配列に対して1つのインデックスを使用します。 Op、私は1つのオカレンスしか見つけられないという問題を再現できません。コードはうまく動作します。しかし、おそらく問題は、ユーザが句読点を入力する場合です: ''word'!= 'word。' != 'word、' ' – polku