2016-09-23 231 views
1

第一列我有一個CSV(mylist.csv)2列,看起來類似於這樣:閱讀的CSV的蟒蛇

jfj840398jgg  item-2f 
hd883hb2kjsd  item-9k 
jie9hgtrbu43  item-12 
fjoi439jgnso  item-3i 

我需要閱讀的第一列進一個變量,所以我只是得到:

jfj840398jgg 
hd883hb2kjsd 
jie9hgtrbu43 
fjoi439jgnso 

我嘗試以下,但它只是讓我的每個關口的第一個字母UMN:

import csv 
list2 = [] 
with open("mylist.csv") as f: 
    for row in f: 
     list2.append(row[0]) 

所以上面的代碼的結果列表2給我爲:

[ 'J', 'H', 'J', 'F']

+3

你需要'split()'行然後得到第一個元素。 –

+1

如果您不使用它,並且您不需要導入'csv'。你只是在閱讀文件,就好像它是一個'txt'比方說。在這種情況下,像@vishes_shell所說的那樣做。 –

回答

3

你應該split行再追加第一項

list2 = [] 
with open("mylist.csv") as f: 
    for row in f: 
     list2.append(row.split()[0]) 

你也可以使用一個列表COMPRE hension這對於創建列表非常標準:

with open("mylist.csv") as f: 
    list2 = [row.split()[0] for row in f] 
+0

只適用於'csv'使用空格作爲分隔符 –

+0

@ Ev.Kounis他的csv使用空格作爲分隔符 – depperm

+0

@ Ev.Kounis OP清楚地顯示了格式 –

2

導入csv,但之後再也沒有用它來實際讀取的CSV。然後,你打開mylist.csv作爲一個正常的文件,所以當你聲明:

for row in f: 
    list2.append(row[0]) 

你實際上講的Python做的是「通過線迭代,並追加行的第一個元素(這將是第一個字母)至list2「。你需要做的,如果你想使用CSV模塊是什麼,就是:

import csv 
with open('mylist.csv', 'r') as f: 
    csv_reader = csv.reader(f, delimiter='  ') 
    for row in csv_reader: 
     list2.append(row[0]) 
0

您還可以在這裏使用pandas

import pandas as pd 
df = pd.read_csv(mylist.csv) 

然後,獲得第一列是那麼容易,因爲:

matrix2 = df[df.columns[0]].as_matrix 
list2 = matrix2.tolist() 

這將只返回list中的第一列。如果您對獲得的結果進行進一步的數據操作,您可能需要考慮將數據保留在numpy中。