2017-07-24 65 views
0

我需要根據以下規則來用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

你眼前的問題是,從你給它iterables 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]) 

然而,這個給你留下較長的文件來處理的剩菜。

這些都不是特別優雅,但他們應該讓你感動。