2017-04-08 112 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來處理多餘的列。

相關問題