用Python操纵文本文件中的行



我有一个文本文件,带有一些单词,每个单词都在一个单独的行中。我如何创建一个新的文本文件,该文件将原始文件中的每2或3或x行/单词放入一行中?

例如,这是输入:

one
two
three
four
five
six
seven
eight

和我想要的输出:

one two
three four
five six
seven eight

我已经写了这篇文章是为了让您开放。它读取第一个文件" input.txt",然后将指定数量的行写入新文件'new.txt'。

lines_to_write = 5 #amount of lines to write from old file to new
with open('input.txt') as f:
    data = f.readlines()
with open('new.txt', 'w') as f:
    for x in range(lines_to_write):
        f.write(data[x])

这显示了如何操纵文件,应该是您开始的良好基础。

似乎您希望将一条可变的行写入一行。因此,我写了一个列表理解,将结合了可变的行数。

with open("in.txt","r") as fi, open("out.txt","w") as fo:
    li = fi.readlines()
    inBetween = 2
    fo.write("n".join(" ".join(line.strip() for line in li[i:i+inBetween]) for i in range(0,len(li),inBetween)))

每第二行:

for x in xrange(len(v.splitlines())):
    if x%2 == 0:
        print " ".join(v.splitlines()[x:x+2])

每第三行:

for x in xrange(len(v.splitlines())):
    if x%3 == 0:
        print " ".join(v.splitlines()[x:x+3]

短:

[ " ".join(v.splitlines()[x:x+2]) for x in xrange(len(v.splitlines())) if x%2 == 0 ]
[ " ".join(v.splitlines()[x:x+3]) for x in xrange(len(v.splitlines())) if x%3 == 0 ]

等...

最新更新