2015-02-24 57 views
0

我在這裏掙扎了一下。我有以下代碼(與其他一些偉大的蟒蛇專家的幫助下在這裏):for x列表 - csv讀取/寫入

skip = [11, 15, 30, 31, 32, 34, 41, 45, 55, 58, 59, 62, 64, 65, 66, 67, 68, 69, 
      71, 72, 73, 74, 75, 76, 77, 78, 79, 80] 
    #skip += range(64, 70) 
    #skip += range(71, 81) 

    with open(outname, 'r') as r, open('import2SFDC.csv', 'w') as w: 
     reader = csv.reader(r) 
     writer = csv.writer(w, delimiter=',', quoting=csv.QUOTE_ALL) 
     header = next(reader) # "next" is the first row in this case, i.e. the header row 
     header.append('SFDCID') # Add the new column 
     writer.writerow(header) # write out the new header 
     for row in reader: 
      new_row = [v for k, v in enumerate(row) if k not in skip] 
      new_row.append(args.SFDCID) 
      writer.writerow(new_row) 

無論出於何種原因跳過跳過變量不起作用定義的列。我確信這是一件顯而易見的事情,但我正在研究代碼並試圖修復它幾個小時,但我無法完成它的工作。

任何幫助,高度讚賞。

感謝

+1

那麼你的輸入是什麼樣子?您還應該跳過一組 – 2015-02-24 15:17:04

+2

您確定跳過不起作用嗎?你沒有在你的標題行中使用'skip',所以所有的標題都會被寫入。這是你正在觀察的嗎?以下行與標題行的長度相同嗎? – 2015-02-24 15:19:17

+1

如果以上是問題 - 修正是1個班輪:'只要在'header = next(reader)'之後''header = [v for k,v in enumerate(header)if k not in skip]' – 2015-02-24 15:20:21

回答

2

我覺得skip功能工作,但僅限於數據行 - 你不使用跳躍在你的標題行,所以所有的標題將被寫入。

的修復是一個1個襯墊,以保證相應的頭被跳過太:

... 
header = next(reader) 
header = [v for k, v in enumerate(header) if k not in skip] 
...