2016-04-27 6 views
1

Я пытаюсь получить каждое слово в текстовом документе «Платежи» в список. Для каждой строки «Платежи», я хочу его в списке в myList, так что это будет выглядеть примерно так:Добавление документа по строкам в список

myList = [['E1234','12/09/14','440','A','0']['E3431','10/01/12','320','N','120']['E0987','04/12/16','342','A','137']] 

мне нужно использовать .split() и .strip(), чтобы удалить отдельные слова из запятых и удалите невидимое следующее пространство строки в конце каждой строки. Это мой код, который я написал до сих пор:

myFile = open("Payments.txt") 
myList = [] 
for line in myFile: 
    print(line.strip()) 
    myList.append(line.strip()) 
myFile.close() 
print(myList) 

Программа работает, но не так, как я намеревался это работать. Программа возвращается следующим:

E1234,12/09/14,440,A,0 
E3431,10/01/12,320,N,120 
E0987,04/12/16,342,A,137 
E5322,05/04/02,503,A,320 
E9422,26/11/16,124,N,0 
E7382,31/03/11,414,A,235 
['E1234,12/09/14,440,A,0', 'E3431,10/01/12,320,N,120', 'E0987,04/12/16,342,A,137', 'E5322,05/04/02,503,A,320', 'E9422,26/11/16,124,N,0', 'E7382,31/03/11,414,A,235'] 

Он приложил документ в myList, но он не положил каждую строку в свой собственный список в myList и линии целая строка, а не отдельные строки, разделенной запятая.

я попробовать добавить .split(',') в конце for line in myFile:, но он отображается сообщение об ошибке:

AttributeError: '_io.TextIOWrapper' object has no attribute 'split' 

ответ

2

Вам нужно позвонить .split() на каждом line:

myList = [] 
for line in myFile: 
    print(line.strip()) 
    myList.append(line.strip().split(",")) 

Или в одной строке с использованием list comprehension:

myList = [line.strip().split(",") for line in myFile] 

Или, вы можете также использовать csv module:

import csv 

with open("Payments.txt") as f: 
    reader = csv.reader(f) 
    myList = list(reader) 

print(myList) 
1

Вы можете сделать все, что вы просите - получить список строк из открытого файла, вскрышных каждую строку и расщепление по , - все в одной строке:

myList = map(lambda line: line.strip().split(","), myFile.readlines()) 
0

Проблема с вашим подходом заключается в том, что после их чтения вы не разделили строки.

Как более pythonic путь, вам лучше открыть файл с модулем csv, который разделяет строки с указанным разделителем и возвращает итерабельность разделенных строк.

import csv 
with open("Payments.txt") as myFile: 
    spam_reader = csv.reader(myFile, delimiter=',') 
    print (list(spam_reader)) 
-1

Вы использовали strip() вместо split().Вот исходный код изменен, чтобы работать:

myFile = open("Payments.txt") 
myList = [] 
for line in myFile: 
    print(line.strip()) 
    myList.append(line.split()) // We use split here 
myFile.close() 
print(myList) 
0

Попробуйте это:

myList = [] 
for line in myFile: 
    myList.append(line.strip().split(sep=',')) 
myFile.close() 
print(myList) 
0

Вы должны вызвать .split() функцию в каждом line.strip() следующим образом:

myFile = open("Payments.txt") 

myList = [] 

for line in myFile: 
    print(line.strip()) 
    myList.append(line.strip().split(",")) 

myFile.close() 
print(myList) 

Результат который вы запрашиваете:

>>>[['E1234','12/09/14','440','A','0']['E3431','10/01/12','320','N','120']['E0987','04/12/16','342','A','137']] 
0

Попробуйте это:

from pprint import pprint 

with open("Payments.txt") as myFile: 
    myList = [] 
    for line in myFile: 
     columns = line.strip().split(', ') 
     myList.append(columns) 

pprint(myList) 

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