2017-06-07 14 views
-1

私はfindでいくつかの奇妙な動作が発生しました。部分文字列を検索するとき、その部分文字列が検索している文字列の先頭にある場合(部分文字列はインデックス0から始まります)、見つからないでしょう。文字列に空白文字を1つ埋め込むと(部分文字列がインデックス1から始まるように)、機能を見つけ出し、期待どおりに動作します。 findを間違って使用していますか?Python find()は文字列の先頭に部分文字列を見つけることができません

my_string = "hello world" 
searches = ["hello", 
      "world", 
      ] 
# Search the string for the two substrings 
for search in searches: 
    if my_string.find(search): 
     print("Found", search) 
    else: 
     print("Did not find", search) 
# Did not find hello 
# Found world 

# Try padding the string, so substring 'hello' is not at the very beginning 
my_padded_string = " " + my_string 
for search in searches: 
    if my_padded_string.find(search): 
     print("Found", search) 
    else: 
     print("Did not find", search) 
# Found world 
# Found hello 

searchesリスト内のサブストリングの順序は重要ではしていないように注意してください。

私はPython 3.6.0 :: Anaconda 4.3.0(64-bit)を使用しています。

+7

返しますfalseyあるインデックス0を、見つける、あなたはそれを返すかどうかを確認する必要が-1つまり、あなたが使用することができます –

+0

が見つかりません:

あなたif文は次のように読んでください'search in my_string' – Anoop

+1

あなたのテストは' if my_string.find(search)> = 0'でなければなりません。 –

答えて

2

find実際には意図したとおりに動作しています。見つかった場合は文字列のインデックスを返し、そうでない場合は-1を返します。 、それを見つけるん

for search in searches: 
    if my_string.find(search) >= 0: 
     print("Found", search) 
    else: 
     print("Did not find", search) 
関連する問題