2016-09-23 195 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中。