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')
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')
new_s = [i.strip('\n') for i in open('filename.txt')]
final_data = '\n'.join(new_s[i][:-1] if new_s[i+1].startswith(')') else new_s[i] for i in range(len(new_s)-1))
您在描述中要求的内容与示例输入中的任何内容都不匹配,甚至接近。没有一行以
)
开头。其中一行以一些空格和a)开头,但前面的一行是空行,前面的最后一行没有逗号可删除但我将忽略示例输入,并解释如何执行描述中要求的操作
最简单的方法是在迭代行的同时跟踪上一行:
通过使用} recipes 中的迭代器包装器),您可以使它更干净、更紧凑,但需要稍微修改,以便在末尾包含“extra”对:
pairwise
迭代器包装器(如^{您可以一行一行地在文本上循环,并在前面检查一个索引中的
)
:输出:
相关问题 更多 >
编程相关推荐