解決策の 1 つは、セクションの先頭にいるかどうかのブール値を変数に格納することです。エキサイティングな (?) エンディングを手放したくありませんが、 から始めることもできますis_first=True
。
わかりました、やっぱりエンディングをあげたいと思います。多かれ少なかれ、私が念頭に置いていたことは次のとおりです。
with open(fname) as f:
content = f.readlines()
is_first = True
d = {}
for line in content:
if line == '\n':
is_first = True
elif is_first:
key = line
is_first = False
else:
if key not in d:
d.put(key, '')
d.put(key, d.get(key) + line)
is_first = False
そのようにコードを計画する方が簡単だと思います。もちろん、変数を使用せずにこれを解決することもできます。特に、is_first
変数を使用した演習を既に行っている場合は特にそうですis_first
。以下は正しいと思いますが、私は非常に注意していませんでした。
with open(fname) as f:
content = f.readlines()
d = {}
while content:
key, content = content[0], content[1:]
if key != '\n':
value, content = content[0], content[1:]
while value != '\n':
if key not in d:
d.put(key, '')
d.put(key, d.get(key) + value)
value, content = content[0], content[1:]