0

次のようなテキスト ファイルがあるとします。

     StudentA:
      10
      20
      30
      40

      StudentB:
      60
      70 
      80
      90

関数を作りたい:

    def read_file(file,student):
        file=file.open('file.txt','r')

私がそれを呼ぶとき、

     read_file(file,StudentA)

次のようなリストが表示されます。

    [10,20,30,40]

whileループでどうすればいいですか?

4

2 に答える 2

2

なぜあなたがを使って読みたいのかわかりませんがwhilefor-loopうまくいくでしょう。しかし、これがファイルを読み取るためのpythonicな方法です。

with open(...) as f:
    for line in f:
        <do something with line>

このwithステートメントは、内部ブロックで例外が発生した場合を含め、ファイルのオープンとクローズを処理します。for line in fはファイルオブジェクトを反復可能として扱います。fこれはバッファリングされたIOとメモリ管理を自動的に使用するため、大きなファイルについて心配する必要はありません。

于 2012-11-26T06:36:10.037 に答える
1

StackOverflow はコード作成サービスではないことに注意してください。通常、あなたが独自の回答を書く試みを示すまで、私はこのようなことをしませんが、今日誰かが私に好意を示しました。その精神で、私は善意を伝えています.

import re

def read_file(filename, student):
    with open(filename, 'r') as thefile:
        lines = [x.strip().upper() for x in thefile.readlines()]
    if student[-1] != ':':
        student += ':'
    current_line = lines.index(student.upper()) + 1
    output = []
    while current_line < len(lines) and re.search('^\d+$', lines[current_line]):
        output.append(int(lines[current_line]))
        current_line += 1
    return output
于 2012-11-26T06:39:10.823 に答える