2016-02-19 170 views
0

說我有一個包含以下內容的文本文件:如何將每個文本文件行分隔爲單獨的列表?

Bob 15 M 
John 16 M 
Jen 15 F 

我如何把它變成一個列表,該列表值:

listOne = ['Bob', '15', 'M'] 
listTwo = ['John', '16', 'M'] 
listThree = ['Jen', '15', 'F'] 

感謝

+0

[字符串分割到Python的list(的可能的複製http://stackoverflow.com/questions/743806/split-string-into-a-列表在蟒蛇) –

+1

你想3列表? – Tim

+0

@PeterWood雅,Forgeted。 –

回答

4

只是拆分它並將其解壓縮

bob, john, jen = [a.split() for a in open(file)] 
+0

非常好的一點。雖然它會被垃圾收集並關閉,但我們無法總是依靠解釋器來做到這一點 – danidee

+0

在CPython中,它通常會立即被垃圾收集;在其他Python實現中,它可能會停留一段時間。 –

0

用打開文件和分割():

with open('text.txt') as f: 
    strings = f.readlines() 
    data = [string.split() for string in strings] 
+1

不需要字符串。只需遍歷文件對象。 –

-1
with open('text.txt') as file: 
    lines = file.readlines()  # Creates a list of lines 
    for line in lines: 
     line = line.split()   # Split each line into list of "words" 

這給你一個嵌套列表這可能是明智的。如果你迫切想3所列出,使用此:

evalvar = "" 
count = 0 
for line in lines: 
    count += 1 
    evalvar += "list"+str(count)+" = "+str(line)+";" 
exec(evalvar)           # Runs the evalvar which has 
                 # code in it. 
0

您可以在文件中適用string.split每一行:

import string 

with open('text.txt') as text: 
    result = map(string.split, text) 

使用Python 3,您需要兌現的map,否則文件沒有按之前它關閉「噸得到閱讀:

result = list(map(string.split, text)) 

然而,string.split已被廢棄,只適用於str對象,正ot unicode。一個更普遍的解決方案是創建一個列表理解:

result = [line.split() for line in text] 
相關問題