2017-01-15 38 views
-2

我想將csv文件加載到python中。 csv文件包含隨機數量的學生的成績和隨機數量的作業。加載csv文件中的所有行 - Python

我想蟒蛇刪除頁眉和第一列(學生姓名),這是我的代碼:

with open("testgrades.csv") as f: 

ncols = len(f.readline().split(',')) 
nrows = sum(1 for row in f) 
grades = np.loadtxt("testgrades.csv", delimiter=',', skiprows=1, usecols=range(1,ncols+1)) 
print(document1) 

的代碼適用於列,但如果我添加一個或多個行不能處理在csv文件中?

我的CSV文件:

csv

而且輸出的Python:

Output

+1

如果您運行此代碼,請顯示您的CSV和預期輸出的幾行以及實際發生的情況。此外,縮進不正確,你應該解決這個問題。 – ayhan

+0

計算'nrows'的用途是什麼?它應該工作。輸入和預期的輸出在這裏是必需的... –

回答

-2

Python有一個特殊的模塊,用於讀取和寫入CSV文件Python CSV

的Python 2

import csv 
with open('testgrades.csv', 'rb') as f: 

的Python 3

import csv 
with open('testgrades.csv', newline='') as f: 
+1

'「rb」'模式只適用於python 2 ... –

+0

@ Jean-FrançoisFabre你是絕對正確的,但原始海報從未提及python版本,並且我假設Python 2 – Sarvex

+0

好的坦克你,所以我添加了「與開放('testgrades。csv','rb')爲f:「 而且它說= TypeError:需要一個類似字節的對象,而不是'str'? – Mikkel

0

csv圖像看上去像搞砸了電子表格圖像。它不是csv文件本身的副本,它是純文本文件。您應該能夠將該文本複製粘貼到您的問題中。

Output圖像是一個數組,其數字對應於csv圖像的前6行。

你的問題不清楚。我猜你已將最後2行添加到電子表格,並且在加載到numpy時遇到問題。我沒有看到電子表格圖片中的這些數字有什麼問題。但是如果您顯示實際的csv文件內容,我們可能會發現問題。也許你實際上沒有將這些添加的行寫入csv文件。

你的代碼示例中,與修正的壓痕是:

with open("testgrades.csv") as f: 
    ncols = len(f.readline().split(',')) 
    nrows = sum(1 for row in f) 
grades = np.loadtxt("testgrades.csv", delimiter=',', skiprows=1, usecols=range(1,ncols+1)) 
print(grades) 

我可以看到使用ncols來確定的列數。 usecols參數需要列的明確列表,而不是某種all-but-first。你也可以從普通的loadtxt(或genfromtxt)那裏得到這個數字。

但爲什麼要計算nrows?你似乎沒有使用它。在loadtxt中並不需要。如果您需要限制讀取的行數,則genfromtxt允許使用max_rows參數。