2017-08-14 85 views
2

每行有不同的列數,但列A始終是文件名,列的其餘部分是該文件的字段。如何統計每行的列數?

有什麼辦法可以統計每行的列數?

import csv 
file=('C:/) 
with open('C:/Count.csv','w',encoding='cp949',newline='') as testfile: 
    csv_writer=csv.writer(testfile) 
    for line in file: 
     lst=[len(line)] 
     csv_writer.writerow(lst) 
+0

有關數據的問題,您應該始終給出一個數據樣本。它會加快速度並避免誤解。 –

+0

@RolfofSaxony我想,但我不知道如何。有什麼方法可以上傳我的文件樣本嗎?或者只是圖像? –

+0

我會剪切並粘貼幾行代碼作爲代碼片段。這應該工作。 –

回答

3

您可以選擇分割逗號或打開文件csv

我推薦後者。這裏是你如何能做到這一點:

file1 = ... # file to read 
file2 = ... # file to write 
with open(file1, 'r') as f1, open(file2, 'w', encoding='cp949', newline='') as f2: 
    csv_reader = csv.reader(f1) 
    csv_writer = csv.writer(f2) 
    for row in csv_reader: 
     csv_writer.writerow([len([x for x in row if x])]) # non-null counts only 

打開這兩個文件同時,遍歷文件的讀取,使用len(row)計算其列,然後寫出來。

+0

首先,感謝您的快速響應。但事情是,它在每一行都寫了367。當我在shell上鍵入行時,它將返回文件的最後一行,並且只有7個執行值,其餘部分爲''。 –

+1

@DoHunKim您的csv具有空值。這很容易糾正。做[len(x for x in row if x)]。 –

+0

'[len(x for x in row if x)]'創建TypeError:類型'generator'的對象沒有len()'。做'x = [x for x in row if x]'then'[len(x)]'工作。謝謝! –