2016-10-03 8 views
0

У меня есть текстовый файл, который содержит две строки текста. Каждая строка содержит имена учащихся, разделенные запятой.Python: чтение текстового файла и разбиение на разные списки

Я пытаюсь написать программу, которая будет читать каждую строку и преобразовывать ее в список. Мое решение, похоже, состоит из двух списков, но я не знаю, как их разграничить, поскольку оба списка называются «список файлов». Например, мне может потребоваться добавить второй список. Как бы я разделил их?

Или это возможно для создания полностью отдельных списков с разными именами? Я хочу, чтобы программа имела возможность обрабатывать множество строк в текстовом файле в идеале.

Мой код:

filelist=[] 

    with open("students.txt") as students: 

      for line in students: 

        filelist.append(line.strip().split(",")) 


    print(filelist) 
+1

Ну, если вы хотите, чтобы обрабатывать произвольное количество строк, то вы выиграли Невозможно создать другой список каждый раз. В этом случае вам, скорее всего, понадобится вложенный список. –

+1

Не могли бы вы показать, что именно находится в 'studentds.txt'? –

+0

Ребекка, Сара, Мэтью, Чарли Дженни, Мэтью, Лаура, Ники – Computing102

ответ

2

Вы должны создать многомерный массив так:

text = open("file.txt") 

lines = text.split("\n") 
entries = [] 
for line in lines: 
    entries.append(line.split(",")) 

Если файл

John,Doe 
John,Smith 

тогда записи будет :

[["John", "Doe"], ["John", "Smith"]] 
+0

Благодарю вас, как тогда я буду различать списки, если я хочу добавить их к одному? – Computing102

+1

Разве этот ответ не делает то, что уже делает код в вопросе? – Efferalgan

+1

@ Computing102 просто использует индексы списка. Если вам нужен список имен, например, строка 5. Просто скажите 'для имени в entires [5]:'. –

0

в коде, список файлов будет рассматриваться как список списка, потому что вы добавляете список к нему, а не элемент, рассмотреть возможность filelist += line.strip().split(",") который объединит в списках

+0

Почему бы просто не использовать 'filelist.extend()'? –

+0

@ Mrgoosberry почти так же, как упоминалось здесь: [link] (http://stackoverflow.com/questions/3653298/concatenating-two-lists-difference-between-and-extend) – JMat

0

две строки к сделанному

with open("file.txt") as f: 
    qlist = map(lambda x:x.strip().split(","), f.readlines()) 

или

with open("file.txt") as f: 
    qlist = [i.strip().split(",") for i in f.readlines()] 
0

Если вы хотите иметь список для каждой строки, вы можете использовать словарь, где ключ является номер строки и значение словаря entry - список имен для этой строки. Что-то вроде этого

with open('my_file.txt', 'r') as fin: 
    students = {k:line[:-1].split(',') for k,line in enumerate(fin)} 

print students 

линии [: - 1], чтобы избавиться от возврата каретки в конце каждой строки

Смежные вопросы