Создайте список, содержащий каждую строку файла - PullRequest
31 голосов
/ 30 ноября 2008

Я пытаюсь открыть файл и создать список с каждой строкой, прочитанной из файла.

   i=0
   List=[""]
   for Line in inFile:
      List[i]=Line.split(",")
      i+=1
   print List

Но этот пример кода дает мне ошибку из-за того, что i+=1 говорит, что index is out of range. В чем моя проблема здесь? Как я могу написать код для увеличения моего списка с каждой новой строкой в ​​InFile?

Ответы [ 8 ]

71 голосов
/ 30 ноября 2008

Это намного проще, чем это:

List = open("filename.txt").readlines()

Возвращает список каждой строки в файле.

38 голосов
/ 10 августа 2015

Я сделал это так

lines_list = open('file.txt').read().splitlines()

Каждая строка содержит символы конца строки (\ n \ r); Таким образом, символы удаляются.

9 голосов
/ 30 ноября 2008
my_list = [line.split(',') for line in open("filename.txt")]
8 голосов
/ 30 ноября 2008

Пожалуйста, прочитайте PEP8 . Вы раскачиваетесь довольно далеко от соглашений Python.

Если вы хотите, чтобы список списков каждой строки разделялся запятой, я бы сделал это:

l = []
for line in in_file:
    l.append(line.split(','))

Вы получите новую строку на каждой записи. Если вы не хотите этого:

l = []
for line in in_file:
    l.append(line.rstrip().split(','))
1 голос
/ 30 ноября 2008

f.readlines () возвращает список, содержащий каждую строку как элемент в списке

если вы хотите, чтобы каждая строка была разделена (","), вы можете использовать списочные выражения

[ list.split(",") for line in file ]
1 голос
/ 30 ноября 2008

Файл - это почти список строк. Вы можете тривиально использовать его в цикле для .

myFile= open( "SomeFile.txt", "r" )
for x in myFile:
    print x
myFile.close()

Или, если вам нужен фактический список строк, просто создайте список из файла.

myFile= open( "SomeFile.txt", "r" )
myLines = list( myFile )
myFile.close()
print len(myLines), myLines

Вы не можете сделать someList[i], чтобы поместить новый элемент в конец списка. Вы должны сделать someList.append(i).

Кроме того, никогда не начинайте простое имя переменной с заглавной буквы. List сбивает с толку тех, кто знает Python.

Кроме того, никогда не использует встроенное имя в качестве переменной. list - это существующий тип данных, и использование его в качестве переменной сбивает с толку тех, кто знает Python.

0 голосов
/ 07 августа 2017

Предполагая, что вы также хотите удалить пробелы в начале и конце каждой строки, вы можете отобразить функцию строковой полосы в список, возвращаемый readlines:

map(str.strip, open('filename').readlines())
0 голосов
/ 30 ноября 2008

Я не уверен насчет Python, но большинство языков имеют функцию push / append для массивов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...