我想要做的是从一个文本文档中获取一系列行,然后在一秒内将它们反向放置。例如,文本文档包含:
hi
there
people
因此,我想将这些相同的行写入文本文档b,除了这样:
people
there
hi
到目前为止,我有:
def write_matching_lines(input_filename, output_filename):
infile = open(input_filename)
lines = infile.readlines()
outfile = open(output_filename, 'w')
for line in reversed(lines):
outfile.write(line.rstrip())
infile.close()
outfile.close()
但这只会返回:
peopletherehi
在一行。任何帮助将不胜感激。
答案 0 :(得分:3)
您只需要+ '\n'
,因为.write
不会为您执行此操作,或者您可以使用
print >>f, line.rstrip()
等效于Python 3:
print(line.rstrip(), file=f)
将为您添加新行。或者做这样的事情:
>>> with open('text.txt') as fin, open('out.txt', 'w') as fout:
fout.writelines(reversed([line.rstrip() + '\n' for line in fin]))
此代码假设您不知道最后一行是否有换行符,如果您知道确实您可以使用
fout.writelines(reversed(fin.readlines()))
答案 1 :(得分:3)
一行会做:
open("out", "wb").writelines(reversed(open("in").readlines()))
答案 2 :(得分:2)
为什么在编写之前先搜索你的行?当你编写它时,你会在每一行的末尾剥离换行符。但是你会注意到你没有任何换行符。只需删除写入中的rstrip()即可。
少即是多。
更新
如果我无法证明/验证最后一行是否有终止换行符,我个人倾向于在前面弄清楚重要的一行。 E.g。
....
outfile = open(output_filename, 'w')
lines[-1] = lines[-1].rstrip() + '\n' # make sure last line has a newline
for line in reversed(lines):
outfile.write(line)
....
答案 3 :(得分:0)
with open(your_filename) as h:
print ''.join(reversed(h.readlines()))
或者,如果您想将其写入其他流:
with open(your_filename_out, 'w') as h_out:
with open(your_filename_in) as h_in:
h_out.write(''.join(reversed(h_in.readlines()))