2017-04-08 185 views
0

我有一个csv文件,其中有两列:一个用于名称,另一个用于电子邮件。我一直在寻找一种方法,将csv文件读入两个列表中,每列一列,以后再处理成一个数据库。有人可以帮忙吗?写两个列csv文件到两个单独的列表

如果帮助文件被格式化,如:

email,name 
email,name 
etc. . . . 
+0

虽然这个问题已经有了一些令人满意的答案,但我会建议您在将来要求人们为您提供代码之前展示您尝试的内容。 –

回答

0

你可以只读取该文件并将其转换为list,再拆用逗号行:

CSV:

email,name 
[email protected],joe 
[email protected],mike 

name,email=[],[] 
for i in list(open("ooo.csv")): 
    name.append(i.strip('\n').split(',')[1]) 
    email.append(i.strip('\n').split(',')[0]) 

您也可以使用csv.DictReader()

例如

from csv import DictReader 

name,email=[],[] 
with open("ooo.csv") as f: 
    for row in DictReader(f): 
     name.append(row["name"]) 
     email.append(row["email"]) 

结果:

['joe', 'mike'] 
['[email protected]', '[email protected]'] 

或者pandas.read_csv()方法

import pandas 
colnames = ['name', 'email'] 
data = pandas.read_csv('ooo.csv', names=colnames) 

print(data.name.tolist()) 
print(data.email.tolist()) 

输出:

['email', '[email protected]', '[email protected]'] 
['name', 'joe', 'mike'] 
+0

我结束了使用DictReader,它为我正在做的事情做了出色的工作。非常感谢你帮助麦迪。 – w1n5t0n

0
email_list = [] 
name_list = [] 
with open("the_file") as f: 
    for line in f: 
     e, n = line.split(',') 
     email_list.append(e) 
     name_list.append(n) 
1

文件:

a,b 
a,b 
a,b 

csv.reader一个对象将产生['a', 'b']为文件的每一行/列。您可以使用zip移调结果:

import csv 
with open(file) as f: 
    reader = csv.reader(f) 
    email, name = zip(*reader) 

>>> email 
('a', 'a', 'a') 
>>> name 
('b', 'b', 'b') 
>>> 

你需要确保当有在CSV列你对转让的左侧为许多名字文件 - 或者您可以使用extended unpacking来处理多余的列。