Python文字列で最初に出現するサブ文字列を見つけるにはどうすればよいですか?


123

だから私の文字列が「男はクールな男だ」なら。
「おい」の最初のインデックスを見つけたい:

mystring.findfirstindex('dude') # should return 4

このためのpythonコマンドは何ですか?
ありがとう。

回答:


213

find()

>>> s = "the dude is a cool dude"
>>> s.find('dude')
4

20
-1見つからない場合は返されます
Christophe Roussy

is文から単語を見つけたい場合はどうすればよいthis is a cool dudeですか?findメソッドを試しましたが、5ではなくインデックス2を返します。find()を使用してこれを行うにはどうすればよいですか?
リグレッサ

@Regressor:正規表現と単語の境界を調べます。
Mechanical_Meat

27

概要:indexおよびfind

findメソッドの隣にもありindexます。findそして、index最初に現れる位置を返す、:両方同じ結果が得られたが、何も見つからなかった場合はindex発生しますValueError一方、findリターン-1。Speedwiseは、どちらも同じベンチマーク結果を持っています。

s.find(t)    #returns: -1, or index where t starts in s
s.index(t)   #returns: Same as find, but raises ValueError if t is not in s

追加知識: rfindおよびrindex

一般に、findおよびindexは、渡された文字列が始まる最小のインデックスrfindrindex返し、それが始まる最大のインデックスを返します。ほとんどの文字列検索アルゴリズムは左から右に検索するため、で始まる関数rは、検索がから行われることを示します左へ

したがって、検索している要素の可能性がリストの先頭よりも末尾に近いrfindか、またはrindex速い場合。

s.rfind(t)   #returns: Same as find, but searched right to left
s.rindex(t)  #returns: Same as index, but searches right to left

出典: Python:Visual QuickStart Guide、Toby Donaldson


文字列が次のように定義されていてinput_string = "this is a sentence"、単語の最初の出現を検索したい場合is、それは機能しますか? # first occurence of word in a sentence input_string = "this is a sentence" # return the index of the word matching_word = "is" input_string.find("is")
リグレッサ

1

これをアルゴリズム的な方法で実装するには、Pythonの組み込み関数を使用しません。これは次のように実装できます

def find_pos(string,word):

    for i in range(len(string) - len(word)+1):
        if string[i:i+len(word)] == word:
            return i
    return 'Not Found'

string = "the dude is a cool dude"
word = 'dude1'
print(find_pos(string,word))
# output 4

0
def find_pos(chaine,x):

    for i in range(len(chaine)):
        if chaine[i] ==x :
            return 'yes',i 
    return 'no'

6
インデントがオフになっていて、引用符を閉じるのを忘れているようです。コードの説明とそれが問題を解決する理由も役立ちます。How to Answer
camille

申し訳ありませんが編集します...私のコードは文字列内の最初の文字の出現を見つけてその場所を返します
Benmadani Yazid

0

詩=「あなたについてすべてのことを頭に留めておくことができるなら、\ n彼らを失い、それをあなたに責めます。\ nすべての人があなたを疑うとき、あなたが自分を信頼できるなら、\ nしかし、彼らの疑いも考慮に入れてください。\ nできれば待って、待つことで疲れないようにしてください。\ nまたは、嘘をついて、嘘をつかないでください。\ n嫌いになって、嫌いに道を譲らないでください。\ nそれでも、見栄えがよくなく、賢明な話をしないでください。 : "

enter code here

print(verse)
#1. What is the length of the string variable verse?
verse_length = len(verse)
print("The length of verse is: {}".format(verse_length))
#2. What is the index of the first occurrence of the word 'and' in verse?
index = verse.find("and")
print("The index of the word 'and' in verse is {}".format(index))

Stack Overflowへようこそ。詳細情報や詳細説明を提供せずに、古い回答済みの質問(緑色のチェックマークが付いた回答)に回答しています。したがって、基本的には受け入れられた回答を複製するだけです。見てい私は良い答えを書くにはどうすればよいですか?。(詳細については、人気のある質問に対する露骨に重複した回答(「サーフィン」)のクリーンアップを処理する方法をご覧ください)。
Ivo Mori
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.