次のようなエントリを含むテキスト ファイルがあります。
JohnDoe
Assignment 9
Reading: NO
header: NO
HW: NO
Solutions: 0
show: NO
Journals: NO
free: NO
Finished: NO
Quiz: 0
Done
Assignment 3
E-book: NO
HW: NO
Readings: NO
Show: 0
Journal: NO
Study: NO
Test: NO
Finished: NO
Quiz: 0
Done
これは小さなサンプルです。ファイルには複数の学生が含まれています。各生徒の名前の下に 2 つの課題があり、各課題の「終了」で始まる行に「終了: はい」と表示されている場合にのみ合格となります。各課題の下のすべてのデータはまとまりがありませんが、各課題の下のどこかに「終了: はい (またはいいえ)」という行があります。ファイルを読み取って、学生が合格したかどうかを判断する方法が必要です。これまでのところ、私は
def get_entries( file ):
with open( "dicrete.txt.rtf", 'rt') as file:
for line in file:
if "Finished" in line:
finished, answer = line.split(':')
yield finished, answer
# dict takes a sequence of `(key, value)` pairs and turns in into a dict
print dict(get_entries( file ))
このコードを取得して単一のエントリを返すことしかできません(最初の「終了」をキーとして読み取り、「YESまたはNO」を値として読み取りますが、これは私が望むものですが、開始するファイル内のすべての行を返すようにしたいですだから私が提供したサンプルデータは、2つのエントリを持つdictを返したいです {Finished:"NO" , Finished:"NO"}