6

私がやろうとしているのは、この文字列がテキスト ファイルにあるかどうかを確認することです。ある場合は、その行を印刷し、そうでない場合はメッセージを印刷します。

これまでにこのコードを実装しました:

 def check_string(string):

     w = raw_input("Input the English word: ")
        if w in open('example.txt').read():
            for w.readlines():
                print line
        else:
            print('The translation cannot be found!')

それを実装しようとしましたが、構文エラーが発生しました。

それは言います:

行の無効な構文 -- w.readlines() の場合:

このコード行を使用する方法について何か考えはありますか?

4

2 に答える 2

8

次のようなことを試してみてください。

import re
def check_string():
    #no need to pass arguments to function if you're not using them
    w = raw_input("Input the English word: ")

    #open the file using `with` context manager, it'll automatically close the file for you
    with open("example.txt") as f:
        found = False
        for line in f:  #iterate over the file one line at a time(memory efficient)
            if re.search("\b{0}\b".format(w),line):    #if string found is in current line then print it
                print line
                found = True
        if not found:
            print('The translation cannot be found!')

check_string() #now call the function

部分文字列だけでなく正確な単語を検索する場合は、regexここを使用することをお勧めします。

例:

>>> import re
>>> strs = "foo bar spamm"
>>> "spam" in strs        
True
>>> bool(re.search("\b{0}\b".format("spam"),strs))
False
于 2013-05-08T03:34:34.387 に答える
4

in演算子を使用したもう少し単純な例を次に示します。

w = raw_input("Input the English word: ") # For Python 3: use input() instead
with open('foo.txt') as f:
    found = False
    for line in f:
        if w in line: # Key line: check if `w` is in the line.
            print(line)
            found = True
    if not found:
        print('The translation cannot be found!')

文字列の位置を知りたい場合は、find()代わりにin演算子を使用できます。

于 2015-06-01T19:08:33.703 に答える