Я пытаюсь открыть файл и создать список с каждой строкой, прочитанной из файла.
i=0
List=[""]
for Line in inFile:
List[i]=Line.split(",")
i+=1
print List
Но этот пример кода дает мне ошибку из-за того, что i+=1 говорит, что index is out of range.
В чем моя проблема? Как я могу написать код, чтобы увеличивать мой список с каждой новой строкой в InFile?






Я не уверен насчет Python, но в большинстве языков есть функция push / append для массивов.
Это намного проще:
List = open("filename.txt").readlines()
Это возвращает список каждой строки в файле.
Метод append поможет. Например: xs.append (строка)
как насчет закрытия файла?
Нет необходимости закрывать его, Python обрабатывает это автоматически, когда файл выходит за пределы области видимости.
Есть ли способ убрать "/ n" из сгенерированного списка?
my_list = [line.split(',') for line in open("filename.txt")]
Боюсь, что прыжок в понимание списка для кого-то, все еще пытающегося понять базовый Python, может быть немного большим шагом. :)
Дастин прав, однако наиболее правильный ответ на этот вопрос дал Орип.
Мне очень нравится этот метод. Однако в конце каждого списка рядом с последним значением в строке печатается \n. Как мне его удалить?
Файл - это почти - список строк. Вы можете тривиально использовать его в цикле для.
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
Пока вы придерживаетесь соглашений, PEP8 также может кое-что сказать о пробелах внутри скобок. :)
См. python.org/dev/peps/pep-0008, также см. stackoverflow.com/questions/159720/…
@Dustin: хорошо осведомлен о рекомендациях по поводу пробелов в скобках в PEP8. После 3 десятилетий пробелов в () я не собираюсь ничего менять.
@Federico Люди, которые читают ваш код и задумываются о том, почему некоторые части выглядят иначе, чем остальной код. :) например Что особенного в вызове len (), что делает его совместимым с PEP8, но несовместимым со строками над ним? Если вам все равно, просто следуйте условностям. :)
@ Дастин: Да, несоответствия между тривиальными интервалами несовместимы. Я видел так много кода, который просто не работает. Я чувствую, что «работа» важнее «постоянного интервала». Если интервалы затрудняют понимание, то в первую очередь нужно решить более серьезные проблемы.
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 для вас
Предполагая, что вы также хотите удалить пробелы в начале и конце каждой строки, вы можете сопоставить функцию полосы строки со списком, возвращаемым readlines:
map(str.strip, open('filename').readlines())
WoooW Просто отлично! Это сработало. Кстати, представьте, что это не файл ... Но я хочу создать динамический список ... Как я могу добавить в него элемент? как если бы был arrayList? ты так много