将两列csv文件写入两个单独的列表

时间:2017-04-08 01:12:12

标签: python list csv

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

如果它有助于文件格式化如下:

email,name
email,name
etc. . . .

3 个答案:

答案 0 :(得分: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来处理多余的列。

答案 1 :(得分:0)

您只需阅读该文件并将其转换为email,name 1@gmail.com,joe 2@gmail.com,mike ,然后用逗号分隔该行:

CSV:

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"])

e.g。

['joe', 'mike']
['1@gmail.com', '2@gmail.com']

结果:

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', '1@gmail.com', '2@gmail.com']
['name', 'joe', 'mike']

输出:

this

答案 2 :(得分: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)