我需要在python中编写脚本,根据以下规则接受并合并2个文件到新文件: 1)从第一个文件中取1个字,然后从第二个文件中取2个字。 2)当我们到达1个文件的末尾时,我需要将其他文件的其余部分复制到合并文件而不做任何更改。
我写了那个脚本,但我只能从每个文件中读取1个单词。 完整的脚本会很好,但我真的很想通过单词来理解我是如何做到的。
这就是我写的:
def exercise3(file1,file2):
lstFile1=readFile(file1)
lstFile2=readFile(file2)
with open("mergedFile", 'w') as outfile:
merged = [j for i in zip(lstFile1, lstFile2) for j in i]
for word in merged:
outfile.write(word)
def readFile(filename):
lines = []
with open(filename) as file:
for line in file:
line = line.strip()
for word in line.split():
lines.append(word)
return lines
答案 0 :(得分:0)
你当前的问题是zip
替换你给它的迭代中的项目:简而言之,它是1:1的映射,你需要1:2。试试这个:
lstFile2a = listfile2[0::2]
lstFile2b = listfile2[1::2]
... zip(lstfile1, listfile2a, lstfile2b)
这样效率有点低,但完成工作。
另一种方法是在使用lstFile1压缩它之前在lstFile2中压缩对(2元组)。第三种方法是完全忘记压缩,并运行自己的索引:
for i in min(len(lstFile1), len(lstFile2)//2):
outfile.write(lstFile1[i])
outfile.write(lstFile2[2*i])
outfile.write(lstFile2[2*i+1])
但是,这会让你留下要处理的较长文件的剩余部分。
这些并不是特别优雅,但它们应该让你感动。