我有一個csv文件,其中有兩列:一個用於名稱,另一個用於電子郵件。我一直在尋找一種方法,將csv文件讀入兩個列表中,每列一列,以後再處理成一個數據庫。有人可以幫忙嗎?寫兩個列csv文件到兩個單獨的列表
如果幫助文件被格式化,如:
email,name
email,name
etc. . . .
我有一個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']
我結束了使用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來處理多餘的列。
雖然這個問題已經有了一些令人滿意的答案,但我會建議您在將來要求人們爲您提供代碼之前展示您嘗試的內容。 –