我有一个csv文件,其中有两列:一个用于名称,另一个用于电子邮件。我一直在寻找一种方法来获取csv文件并将其读入两个列表,每列一个,以后再处理成数据库。有人可以帮忙吗?
如果它有助于文件格式化如下:
email,name
email,name
etc. . . .
答案 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)