我有一个文本文件,包含一些单词,每个单独一行。我如何创建一个新的文本文件,将原始文件中的每2或3或X行/单词放在一行中?使用Python处理文本文件中的行
例如,这里是输入:
one
two
three
four
five
six
seven
eight
和输出我想要的东西:
one two
three four
five six
seven eight
我有一个文本文件,包含一些单词,每个单独一行。我如何创建一个新的文本文件,将原始文件中的每2或3或X行/单词放在一行中?使用Python处理文本文件中的行
例如,这里是输入:
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 ]
等等...
你能描述你有什么问题吗?一般来说,您会读取文本文件的内容,获取想要增加的行(但是您可以确定),然后将所有行写入新文件。你究竟在哪里卡住?读取文件,写入文件? – Lomtrur
如果没有足够的行,预期的行为是什么?例如,您的文件具有“One Two Three”作为行,您想要合并每两行。 “三”会发生什么? – Lomtrur
解决方案概述:将所有单词读入列表中,然后重复从列表中取出_n_个单词并将它们写入输出文件的同一行,直到用完单词。使用'x [pos:pos + n]'从'pos'位置开始返回列表'x'的子列表,长度不超过'n'个元素。 – 9000