2016-02-19 2 views
0

сказать у меня есть текстовый файл, который содержит следующее:Как отделить каждую строку текстового файла в отдельные списки?

Bob 15 M 
John 16 M 
Jen 15 F 

Как поместить его в список, так что список значений являются:

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

Благодаря

+0

Возможный дубликат [Split строки в список в Python] (http://stackoverflow.com/questions/743806/split-string-into-a- list-in-python) –

+1

Вы хотите 3 списка? – Tim

+0

@PeterWood ya, забыл. –

ответ

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] 
Смежные вопросы