2011-02-12 71 views
1

還在教自己的Python,所以請不要恨我,如果我的代碼是可怕的......的Python:刪除CSV標題行和rewite新的頭排

我的代碼:

ifile = csv.reader(open("TE.csv",'rb')) 
shutil.copy("TE.csv","temp") 
tempfile = csv.reader(open("temp","rb")) 
ofile = csv.writer(open("TE-RESULTS.csv","ab")) 

for row in ifile: 
    #do some web scraping stuff here 

    VC_s = str(cells[1].find(text=True)) 
    VC_i = str(cells[2].find(text=True)) 
    VT_s = str(cells[4].find(text=True)) 

    entry = [VC_s, VC_i, VT_s] 

    rowAdd = tempfile.next() 
    ofile.writerow(rowAdd + entry) 

問題:我從CSV開始,我將不得不添加3列到最後。用我上面的代碼中,我得到以下的輸出:

HEADER1  HEADER2 HEADER3 result1 result2 result3 
autocheck C:\check 1.jpg  result1 result2 result3 
services C:\svcs 2.jpg  result1 result2 result3 

DESIRED輸出:

HEADER1  HEADER2 HEADER3 HEADER4 HEADER5 HEADER6 
autocheck C:\check 1.jpg  result1 result2 result3 
services C:\svcs 2.jpg  result1 result2 result3 

什麼是修復我的代碼,這將使我所期望的輸出的最好方法是什麼?我最初的想法是刪除HEADERS行,並將其替換爲TE-RESULTS.csv文件中新的HEADERS行。

回答

0

處理for循環之前的標題行。

rowAdd = tempfile.next() 
ofile.writerow(rowAdd + ['HEADER4', 'HEADER5', 'HEADER6']) 

for ... 
+0

謝謝,但現在輸出重複每行中的前三個標題。我已經能夠通過更改最後一部分來解決這個問題,例如:`rowAdd2 = tempfile.next()ofile.writerow(rowAdd2 + entry) `但它給了我一個StopIteration錯誤。我如何擺脫這個錯誤? – serk 2011-02-12 05:56:45