2013-04-28 2 views
1

Я хочу загрузить список в список из текстового файла. Я прошел множество примеров, но не решил. Это то, что я хочу сделать Я новый пчела в PythonСписок загрузки Python в списке из текстового файла

def main() 
    mainlist = [[]] 
    infile = open('listtxt.txt','r') 
    for line in infile: 
     mainlist.append(line) 

    infile.close() 

    print mainlist 

`[[],['abc','def', 1],['ghi','jkl',2]]` 

однако, что я хочу что-то вроде этого

[['abc','def',1],['ghi','jkl',2]] 

мой список содержит

'abc','def',1 
'ghi','jkl',2 
'mno','pqr',3 

что я хочу когда я обращаюсь к списку print mainlist[0] должен вернуть

'abc','def',1 

любая помощь будет высоко оценен Спасибо,

+0

Для вашего ожидаемого результата: '[[ 'ABC', 'опр', 1], [ 'ГХИ', 'JKL', 2]],' печать mainlist [0] 'вернет' [ 'abc', 'def', 1] ' –

+0

все в порядке, у вас просто есть дополнительная скобка, чтобы начать свой список! измените 'mainlist = [[]]' на 'mainlist = []', а затем 'print mainlist [0]' будет возвращать '['abc', 'def', 1]' –

ответ

3

Может быть что-то вроде этого.

mainlist = [] 
infile = open('listtxt.txt','r') 
for line in infile: 
    mainlist.append(line.strip().split(',')) 

infile.close() 

print mainlist 
+0

из вышеперечисленного ["'abc' , 'def', 1 "," ghi ',' jkl ', 2 "," mno', 'pqr', 3 "] – user2330294

+0

Нет, это не так, разделите список.infile = ["'abc', 'def', 1", "ghi ',' jkl ', 2", "mno', 'pqr', 3"] Я попробовал, выход [[" 'abc' "," def ", '1'], [" ghi '"," jkl' ", '2'], [" mno '"," pqr' ", '3' ]] – marcadian

2

Вы инициализация mainlist с пустым списком в качестве первого элемента, а не самого пустого список. Изменение:

mainlist = [[]] 

в

mainlist = [] 
+0

смешно, когда я создаю список вручную все работает нормально def main(): mainlist = [['abc', 'def', 1], ['ghi', 'jkl', 2]] print mainlist [0] [0] output is 'abc' Почему нет, когда я загружаю список из текстового файла Кажется, что мне не хватает какой-то точки – user2330294

0

Я хотел бы попробовать что-то вроде:

with open('listtxt.txt', 'r') as f: 
    mainlist = [line for line in f] 
+0

out of above of ["'abc', 'def', 1 "," ghi ',' jkl ', 2 "," mno', 'pqr', 3 "] Почему есть двойные кавычки – user2330294

+0

@ user2330294 ваш вход имеет кавычки, которые являются частью строки – Daenyth

6

Мне кажется, что вы могли бы сделать это так:

from ast import literal_eval 
with open('listtxt.txt') as f: 
    mainlist = [list(literal_eval(line)) for line in f] 

Этот является простым способом убедиться, что типы элементов сохранились. например a строка как:

"foo","bar",3 

будет преобразовано в 2 строки и целое число. Разумеется, сами строки должны быть отформатированы как кортеж python ... и это, вероятно, не самый быстрый подход из-за его общности и простоты.

+0

Это он, сценарий выше работал. То, как я это хотел, это прекрасно, Большое спасибо Кстати, я мог бы сделать очень быстро, используя массив в C# или delphi и т. Д. – user2330294

1
mainlist = [] 
infile = open('filelist.txt', 'r') 
for line in infile: 
    line = line.replace('\n', '').replace('[', '').replace(']', '').replace("'", "").replace(' ', '') 
    mainlist.append(line.split(',')) 
infile.close() 
Смежные вопросы