2017-04-22 69 views
2

我想只讀取csv文件中的第一列。我嘗試了下面的代碼,但沒有得到可用解決方案的結果。Python - 從csv文件中讀取特定列

data = open('data.csv') 
reader = csv.reader(data) 
interestingrows = [i[1] for i in reader]' 

我得到的錯誤是:

Traceback (most recent call last): 
    File "G:/Setups/Python/pnn-3.py", line 12, in <module> 
     interestingrows = [i[1] for i in reader] 
    File "G:/Setups/Python/pnn-3.py", line 12, in <listcomp> 
     interestingrows = [i[1] for i in reader] 
IndexError: list index out of range 
+1

'i [1]'會給你第二列而不是第一列。你應該嘗試'我[0]' – Kasramvd

+0

感謝您的幫助 –

+0

[從csv文件讀取每列]可能重複(http://stackoverflow.com/questions/5741518/reading-each-column-from-csv-file ) –

回答

0

如果你想從一個可轉位迭代的第一個項目,你應該使用0作爲指標。但在這種情況下,您可以簡單地使用zip()以獲取列的迭代器,並且由於csv.reader返回迭代器,因此可以使用next()來獲取第一列。

with open('data.csv') as data: 
    reader = csv.reader(data) 
    first_column = next(zip(*reader)) 
2

您還可以使用DictReader通過它們的頭接入列

例如:如果你有一個名爲「stackoverflow.csv」文件,標題(「Oopsy」,「雛菊」,「粗」,和「Tumble」) 您可以通過以下腳本訪問第一列:

import csv 
with open(stackoverflow.csv) as csvFile: 
#Works if the file is in the same folder, 
# Otherwise include the full path 
    reader = csv.DictReader(csvFile) 
    for row in reader: 
     print(row["Oopsy"]) 
+0

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。請參閱[如何寫出一個好答案](https://stackoverflow.com/help/how-to-answer) – Nuageux

+0

道歉,我對這一切都很陌生。我添加了代碼,它看起來怎麼樣? – kosherdiah

+0

嘗試小心縮進,因爲如果縮進不好,它將不起作用。 (我修復它與編輯) – Nuageux