擅长:python、mysql、java
<p>只需以主语为键对dict中的元素进行分组:</p>
<pre><code>from collections import OrderedDict
od = OrderedDict()
with open("match.txt") as f:
key = next(f)
for line in f:
if line.startswith(("a","b")):
od.setdefault(key,[]).append(line)
else:
key = line
</code></pre>
<p>输出:</p>
<pre><code>for sub,cont in od.items():
print("{}, {}".format(sub, cont))
STUDENT
, ['a john\n', 'a anny\n', 'a pone\n', 'b julia\n', 'b sopia\n']
SUBJECT
, ['b math\n', 'b physical\n']
CLASS
, ['a one\n', 'a two\n', 'a three\n', 'a four\n', 'a five\n']
PROFESSOR
, ['b uno\n', 'b sonovon\n', 'b jone']
</code></pre>
<p>我的目标是删除重复主题并加入内容。很明显这就是你想要的。你知道吗</p>
<p>OrderedDict将保持有序,如果您想将更新的行写入文件,只需重新打开并在迭代时写入即可。items?你知道吗</p>
<pre><code>with open("match.txt", "w") as f:
for sub, cont in od.items():
f.write(sub)
f.writelines(cont)
</code></pre>
<p>新输出,由主题连接:</p>
<pre><code>STUDENT
a john
a anny
a pone
b julia
b sopia
SUBJECT
b math
b physical
CLASS
a one
a two
a three
a four
a five
PROFESSOR
b uno
b sonovon
b jone
</code></pre>