2017-08-11 54 views
-1

我想從輸入文件複製列並將其放到輸出文件中。例如,在我的輸入文件中,我想將行[2]複製到輸出文件的行[15]上。在下面的代碼中,它正在複製輸入的行[2]並將其粘貼到輸出的行[0]上,這從代碼中是有意義的。我怎樣才能使它行[18]工作?在CSV文件上覆制列

for path in glob.glob("out.csv"): 
    if path == "out1.csv": continue 
    with open(path) as fh: 
    reader = csv.reader(fh) 
    for row in reader: 
     if row[8] == 'READ' and row[10] == '1110': 
      writer = csv.writer(out1, dug1) 
      writer.writerow([row[2]]) 
      writer.writerow(row 
+2

多少數據你在一起工作嗎?多少行/列。你能提供一個樣本嗎?我問的原因是,簡單的方法是將兩個文件讀入內存,在需要的位置添加所需的行,然後重寫整個文件。 – MattR

+0

如果你創建一個長度爲n的列(n爲15或者18或者你的用例是什麼),那麼會發生什麼,並且將所需的值複製到這個列表的正確索引中,然後調用'writer.writerow(row )'? – Adam

回答

0

我相信無論您是根據從CSV中讀取的內容來查找固定行輸出還是動態行輸出。您從閱讀器中單獨閱讀所有行。更改

reader = csv.reader(fh) 

rows = list(csv.reader(fh)) 

如果你有巨大的CSV文件,然後上面是不推薦,因爲它會加載在內存中的整個文件,你不希望這樣的事情發生。

現在你有一個rows變量,它具有來自csv的所有行。如果您想要進入特定行,請使用rows[row-1][col-1]

如果你想寫一個特定的行到你的CSV,那麼你可以使用rows[row-1]然後寫入csv。

writer.writerow(rows[row-1]) 

如果你想某些列從該行再搭配你需要使用數組切片

writer.writerow(rows[row-1][:3] + ["my","data"] + rows[row-1][5:]) 

在上面,你應該有足夠的例子來實現你在找什麼