写两个列csv文件到两个单独的列表
问题描述:
我有一个csv文件,其中有两列:一个用于名称,另一个用于电子邮件。我一直在寻找一种方法,将csv文件读入两个列表中,每列一列,以后再处理成一个数据库。有人可以帮忙吗?写两个列csv文件到两个单独的列表
如果帮助文件被格式化,如:
email,name
email,name
etc. . . .
答
你可以只读取该文件并将其转换为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
答
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)
答
文件:
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来处理多余的列。
虽然这个问题已经有了一些令人满意的答案,但我会建议您在将来要求人们为您提供代码之前展示您尝试的内容。 –