2017-07-19 24 views
-1

変数にテキストを見つけるために、以下のコードを書いています。外側のif条件では動作しますが、内側条件では動作しません(外側と同じ)。Python string find()メソッド

name = "Sachin" 

if name.find("chin"): 
    print("Text Presented") 
    print(name) 
    if name.find("Sac"): 
     print("Sac is prsented") 
     print(name) 

O/P: テキスト サチン

を提示した。しかし、それは(下の文字を検索)コードの下では動作します:

name = "Sachin" 

if name.find("chin"): 
    print("Text Presented") 
    print(name) 
    if name.find("sac"): 
     print("Sac is prsented") 
     print(name) 

O/P: テキスト提示 サチン サックはprsented サシン

なぜこのことが起こっているのか教えてください。

+3

をインポートすることにより、文字列で検索するために正規表現を使用することができます。 –

+2

これは 'pip'または' pycharm'にどのように関連していますか? –

+0

が質問を更新しました。 – jaibalaji

答えて

4

name.find("Sac")0のブール値がFalseであるため、if節が望むようにトリガされません。

この代わりに試してください。

name = "Sachin" 

if "chin" in name: 
    print("Text present") 
    print(name) 
    if "Sac" in name: 
     print("Sac is present") 
     print(name) 

注:0は、位置0(Pythonは0インデックスを使用する)で開始"Sachin""Sac"ためname.find("Sac")によって返されます。

別に0インデックスから、Pythonはまたname.find("sac")リターン(何をstr INGにfindにしようとしていることがないあるときに何が起こるかである)-1大文字と小文字を区別の意味です。しかし、bool(-1) = 1だからifはトリガを終了し、その下のコードが実行されます。

+0

これを拡張するために、小文字の "" sac "をつけた2番目の文字は存在しないので' -1'を返します。これはif文で 'True'と評価されます。 –

+0

私は質問を変更しました。今すぐチェックできます – jaibalaji

+0

私はまともな方法で使っていますか? – jaibalaji

2

name.find("chin")は、値2を返します。この値は、boolean値がTrueで、Pythonで返されます。

name.find("Sac")は、値0を返します。値はFalseです。この値は、PythonでFalseです。

name.find("sac")は、-1という値を返します。値はTrueで、pythonにはブール値が入ります。

in演算子を使用すると、これは必要な機能を提供すると思います。 以下参照:

name = "Sachin" 

if "chin" in name: 
    print("Text Presented") 
    print(name) 
    if "Sac" in name: 
     print("Sac is prsented") 
     print(name) 
+0

素晴らしいありがとう:) – jaibalaji

1

パイソンfind(sub)方法ストリングサブが見つかり、戻り-1なら、そのされていない最小インデックスを返します。

  • Sachinの "S"のインデックスが "0"であるため、name.find( "Sac")は "0"を返します。したがって、 'if'の本体は実行されていません。
  • 2番目のコードでは、name.find( "sac")は "-1"を返しますが、(-1)が真の場合、このコード部分で 'if'の本文が実行されます。私は今あなたがコンセプトを得ることを願っています。
0

あなただけのコードの両方の部分が同じであるre

import re 
name = "Sachin" 
if re.search("chin",name): 
    print("Text Presented") 
    print(name) 
    if re.search("Sac",name): 
     print("Sac is prsented") 
     print(name)