0

以下は簡単な検索です。iteratorファイルの最初の行をスキップしているという事実を除いて、それは機能します。内部iterator最初のprintステートメントには正しい単語が含まれていますが、2番目のprintステートメント(forループの後)には、最初のステートメントではなく、2行目のテキストが含まれています。

私が見逃しているこのforループの動作はどうですか?

"""Searches for the query inside a file
"""
def lines(the_file, query):
    lines = open(the_file)
    line(lines, query)

def line(lines, query):
    line = lines.readline()
    iterator(line, lines, word, query)

def word(line, query):
    word = line.strip()
    conditional(query, word)

def iterator(this, that, function, query):
    print this
    for this in that:
        print this
        function(this, query)

def conditional(this, that):
    if this in that:
        output(that, True)
    else:
        None

def output(query, result):
    print query

def search(the_file, query):
    lines(the_file, query)

search('c:/py/myfile.txt', 'a')
4

2 に答える 2

1

変数linesはファイルオブジェクトであり、作成したときreadline()にポインタを2行目に移動しました。

于 2013-01-29T23:44:47.857 に答える
1

私はあなたの問題がここにあると思います:

def line(lines, query):
    line = lines.readline()
    iterator(line, lines, word, query)

この行:line = lines.readline()反復を開始する前に、ファイルから1行を読み取っています。次に、forループ内で実際に変数を上書きしているthisので、元の変数を指していlineません。

于 2013-01-29T23:45:38.297 に答える