2017-05-17 26 views
0

空我有以下CSV文件:我讀CSV和存儲每一列到不同的變量(名稱,SUB,IDX,ISD):如何連接列表,並刪除整行,如果任何元素是在Python

Name Sub Idx Isd 
AAB YAH 2 7 
AB VF 5 
    YHJ 3 4 

YAH HJY 25 23 

現在我想將它們存儲爲表格形式(作爲csv中的原始數據)。現在,我只想在所有單元格都有數據(沒有空單元格)的情況下存儲數據。

我的最終輸出:

Name Sub Idx Isd 
AAB YAH 2 7 
YAH HJY 25 23 

我使用下面的代碼:

import csv 
from collections import defaultdict 
columns=defaultdict(list) 
with open('inputCSV.csv','r',) as f: 
    reader=csv.DictReader(f) 
    for row in reader: 
     for(k,v) in row.items(): 
      columns[k].append(v) 
name=columns['Name'] 
Sub=columns['Sub'] 
Idx=columns['Idx'] 
Isd=columns['Isd'] 

回答

0

這可能會更容易只使用一個標準csv.reader(),而不是一本字典讀者做:

import csv 

with open('input.csv', 'rb') as f_input, open('output.csv', 'wb') as f_output: 
    csv_input = csv.reader(f_input) 
    csv_output = csv.writer(f_output) 
    header = next(csv_input) 
    csv_output.writerow(header) # copy the header to the output 

    for row in csv_input: 
     if len(row) and '' not in row: 
      csv_output.writerow(row) 

首先將輸入CSV中的標題複製到輸出CSV。然後,對於每一行,它首先檢查以確保它不是空行。然後測試整行以查看是否有空值。如果沒有,則將整行寫入輸出CSV文件。

給你一個output.csv包含:

Name,Sub,Idx,Isd 
AAB,YAH,2,7 
YAH,HJY,25,23 

注意,這個假設您使用Python 2.x版本如果正在使用Python 3.x,請更換此行:

with open('input.csv', newline='') as f_input, open('output.csv', 'w', newline='') as f_output:  
+0

謝謝,它的工作原理 – Balaji

+0

很高興它的工作。不要忘記點擊向上/向下按鈕上的灰色勾號,接受答案作爲接受的解決方案。 –

相關問題