2016-05-11 8 views
0

こんにちは私は、Pythonを使用してテキストファイル内の文字列を検索したいと思います。私はpython3を使用しています。ここでテキストファイルの検索文字列:名前が定義されていないエラーpython3

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

def check(): 
     datafile = open('testfile.txt') 
     found = False 
     for line in datafile: 
      if good in line: 
       found = True 
       break 

     return found 

found = check() 
if found: 
    print ("String found") 
else: 
    print ("not found") 

ここTESTFILE.TXTは「良い」の文字列を含むテキストファイルです。したがって、期待される出力は "String found"でなければなりません。しかし、 "NameError:name 'good'が定義されていません。

+2

'good'は文字列ではありません。 「良い」は。 –

答えて

0

あなたは文字列になりたいものを引用符で囲むのを忘れてしまいました。
good'good'または"good"に変更すると、問題が解決されます。

このコードにはいくつか問題がありますが、ファイルを閉じるのを忘れてしまいます。あなたが(例えばIDLEなど)IDEでのpythonを編集する場合のシンタックスハイライトは、通常、変数名を強調表示した文字列をハイライトではなくなるので、あなたはこれらのより簡単のような過ちに気づくでしょう

def check(): 
    with open('testfile.txt') as datafile: 
     found = False 
     for line in datafile: 
      if 'good' in line: 
       found = True 
       break 
    return found 


あなたのコードでは、より多くのようになるはずです。

3

文字列 'good'を探しているので、引用符で囲む必要があります。 。あなたの問題を解決する必要があります良いという名前の変数に格納し、その変数が存在しない

if 'good' in line: 

何かを見つける

編集し、コメントへの返信です。 あなたは文字列が見つかった行を返すことができますprintステートメントに追加してください。

def check(): 
     datafile = open('testfile.txt') 
     found = False 
     for line in datafile: 
      if 'good' in line: 
       found = True 
       break 
     return found, line 

found, line = check() 
if found: 
    print ("String found: " + line) 
else: 
    print ("not found") 
+0

はい、それを得ました。ありがとう。 – Codelife

+0

また、もう1つのヘルプが必要です。もし私がその言葉を含む行を印刷したいのであれば、私は何をすべきですか? – Codelife

+0

でした。ありがとう。あなたの答えを承認する。 – Codelife

0

x.find('my string')オブジェクトを使用すると、文字列をチェックし、探している部分文字列が何回記述されているかを返します。それが存在しない場合は、0を返す必要があります。これはもっとpythonの方法です。これが助けて欲しい=)

関連する問題