Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 3, 2010 00:45:14

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

парсить текстовый файл

ой, не с двумя циклами, я имел ввиду вариант pill'а, но подправил бы его вот так:

big_list = []
for line in in_file:
if line[0] == '[':
big_list.append([])
elif line.strip():
big_list[-1].append(line)



Офлайн

#2 Ноя. 3, 2010 07:01:17

pill
От:
Зарегистрирован: 2010-08-27
Сообщения: 223
Репутация: +  0  -
Профиль   Отправить e-mail  

парсить текстовый файл

pasaranax
ой, не с двумя циклами, я имел ввиду вариант pill'а, но подправил бы его вот так:
Лаконичнее, но почему elif line.strip():?

Так ведь line.strip() уходит в никуда.

Наверное все же:
big_list = []
for line in in_file:
if line[0] == '[':
big_list.append([])
else:
big_list[-1].append(line.strip())



Офлайн

#3 Ноя. 3, 2010 08:58:04

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

парсить текстовый файл

На случай такого входного файла:

[5й класс]
Иванов

Петров
[6й класс]


Сидоров
Пупкин

[7й класс]
Шлёпанцев

Коклюшкин



Офлайн

#4 Ноя. 3, 2010 09:37:19

XPb14
От:
Зарегистрирован: 2010-09-07
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

парсить текстовый файл

pill Ваш сниппет неправильно работает, создаётся одномерный список, а в сниппете pasaranax всё как надо. Вот только я не могу понять чем второй вариант pasaranaxа лучше первого, не могли бы пояснить? дело только в понимании кода (“очевидности”)? Ну и спасибо конечно всем за помощь

сейчас задумался почему это не работает сниппет pillа, и чесно говоря просто стало лень разбираться, может я чего-то и напутал



Отредактировано (Ноя. 3, 2010 09:53:55)

Офлайн

#5 Ноя. 3, 2010 10:04:30

pill
От:
Зарегистрирован: 2010-08-27
Сообщения: 223
Репутация: +  0  -
Профиль   Отправить e-mail  

парсить текстовый файл

Проверил, вроде работает но кто его знает…
>>> pprint.pprint(big_list)
[, , ]



Офлайн

#6 Ноя. 3, 2010 10:42:22

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

парсить текстовый файл

XPb14
Вот только я не могу понять чем второй вариант pasaranaxа лучше первого, не могли бы пояснить? дело только в понимании кода (“очевидности”)? Ну и спасибо конечно всем за помощь
Вообще-то, он совсем по другому действует. Первой строкой создается список с элементами - строками между двумя , при чем с мусором вроде покоцанного , а потом эти строки разбиваются по символу \n и записываются в этот же самый элемент.
А во втором варианте список просто ровно пополняется новыми элементами.



Офлайн

#7 Ноя. 3, 2010 11:32:18

XPb14
От:
Зарегистрирован: 2010-09-07
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

парсить текстовый файл

понятно… и вот напишу для будущих поколений - достаточно веский недостаток первого способа (делящего по “\n”), что последняя строка должна быть пустой (тобиш после последнего элемента тоже должно быть “\n”)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version