Создайте список, содержащий каждую строку файла

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

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

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
39
0
124 193
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

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

Ответ принят как подходящий

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

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

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

WoooW Просто отлично! Это сработало. Кстати, представьте, что это не файл ... Но я хочу создать динамический список ... Как я могу добавить в него элемент? как если бы был arrayList? ты так много

UcanDoIt 30.11.2008 01:06

Метод append поможет. Например: xs.append (строка)

Eli Courtwright 30.11.2008 02:06

как насчет закрытия файла?

matlabit 25.11.2015 16:44

Нет необходимости закрывать его, Python обрабатывает это автоматически, когда файл выходит за пределы области видимости.

Brian C. Lane 04.12.2015 20:39

Есть ли способ убрать "/ n" из сгенерированного списка?

Udit Hari Vashisht 03.10.2018 21:45
my_list = [line.split(',') for line in open("filename.txt")]

Боюсь, что прыжок в понимание списка для кого-то, все еще пытающегося понять базовый Python, может быть немного большим шагом. :)

Dustin 30.11.2008 01:08

Дастин прав, однако наиболее правильный ответ на этот вопрос дал Орип.

tzot 30.11.2008 11:23

Мне очень нравится этот метод. Однако в конце каждого списка рядом с последним значением в строке печатается \n. Как мне его удалить?

interstellar 27.03.2016 18:52

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

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.

Как я могу узнать о стандартах кодирования Python? Спасибо, я не знал, что вы используете переменные имена в нижнем регистре ... какая-то особая причина для этого? Ty

UcanDoIt 30.11.2008 01:09

Пока вы придерживаетесь соглашений, PEP8 также может кое-что сказать о пробелах внутри скобок. :)

Dustin 30.11.2008 01:11

См. python.org/dev/peps/pep-0008, также см. stackoverflow.com/questions/159720/…

S.Lott 30.11.2008 01:12

@Dustin: хорошо осведомлен о рекомендациях по поводу пробелов в скобках в PEP8. После 3 десятилетий пробелов в () я не собираюсь ничего менять.

S.Lott 30.11.2008 01:13

@Federico Люди, которые читают ваш код и задумываются о том, почему некоторые части выглядят иначе, чем остальной код. :) например Что особенного в вызове len (), что делает его совместимым с PEP8, но несовместимым со строками над ним? Если вам все равно, просто следуйте условностям. :)

Dustin 30.11.2008 02:03

@ Дастин: Да, несоответствия между тривиальными интервалами несовместимы. Я видел так много кода, который просто не работает. Я чувствую, что «работа» важнее «постоянного интервала». Если интервалы затрудняют понимание, то в первую очередь нужно решить более серьезные проблемы.

S.Lott 30.11.2008 06:41

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

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

[ list.split(",") for line in file ]

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

Если вам нужен список списков каждой строки, разделенный запятыми, я бы сделал следующее:

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

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

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

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

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

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

Спасибо, это удаляет символы новой строки, как я ожидал от принятого ответа :) +1 для вас

Stan Smulders 06.11.2018 15:52

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

map(str.strip, open('filename').readlines())

Другие вопросы по теме