<p>您在描述中要求的内容与示例输入中的任何内容都不匹配,甚至接近。没有一行以<code>)</code>开头。其中一行以一些空格和a)开头,但前面的一行是空行,前面的最后一行没有逗号可删除</p>
<p>但我将忽略示例输入,并解释如何执行描述中要求的操作</p>
<p>最简单的方法是在迭代行的同时跟踪上一行:</p>
<pre><code>lastline = None
for line in infile:
line = line.rstrip()
if line.startswith(")"):
if lastline is not None:
lastline = lastline.rstrip(",")
if lastline is not None:
outfile.write(lastline + '\n')
lastline = line
if lastline is not None:
outfile.write(lastline + '\n')
</code></pre>
<hr/>
<p>通过使用<code>pairwise</code>迭代器包装器(如<a href="https://docs.python.org/3/library/itertools.html#itertools-recipes" rel="nofollow noreferrer">^{<cd3>} recipes</a>中的迭代器包装器),您可以使它更干净、更紧凑,但需要稍微修改,以便在末尾包含“extra”对:</p>
<pre><code>def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = itertools.tee(iterable)
next(b, None)
return itertools.zip_longest(a, b, fillvalue='')
stripped = (line.rstrip() for line in infile)
for line, nextline in pairwise(stripped):
if nextline.startswith(")"):
line = line.rstrip(",")
if line is not None:
outfile.write(line + '\n')
</code></pre>