Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 23, 2013 19:01:26

Luke
От:
Зарегистрирован: 2010-11-29
Сообщения: 30
Репутация: +  3  -
Профиль   Отправить e-mail  

Как узнать индекс строки в списке строк ?

Вроде бы должно быть очень просто , но не пойму как ?
есть такой код:

	for line in lines:
		try:
			print lines.index(line),pattern.parseString(line)
		except: pass
Находит образец правильно , теперь надо скопировать линию (и её номер) содержащую образец в другой список, как узнать номер этой линии ? (или как то по другому).
index() - глючит, он заново ищет линию, а там есть одинаковые, и возвращает номер первой попавшейся такой же линии (а не текущей). Странная реализация через поиск, а если в строке 100500 символов.
Неужели надо вводить дополнительную переменную-счётчик? это работает
	i=0
	s=0
	for line in lines:
		i+=1
		try:
			print pattern.parseString(line)
			print i
			s+=1
			print s
		except: pass
Но крайне некрасиво, цикл for тут вообще пятое колесо



Отредактировано Luke (Янв. 23, 2013 19:48:31)

Офлайн

#2 Янв. 23, 2013 20:25:37

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Как узнать индекс строки в списке строк ?

Не совсем понял, что хотите, но подозреваю, что это:

for i, line in enumerate(lines):
    print i, pattern.parseString(line)

Офлайн

#3 Янв. 23, 2013 20:49:34

Luke
От:
Зарегистрирован: 2010-11-29
Сообщения: 30
Репутация: +  3  -
Профиль   Отправить e-mail  

Как узнать индекс строки в списке строк ?

Спасибо, то что нужно.

___________________________________________________________________________________

try:
except:
у меня тут как замена
if pattern.parseString(line)==true:
но так не работает, так как parseString() вызывает исключение если не находит образец,
это функция из модуля pyparsing



Отредактировано Luke (Янв. 23, 2013 21:10:36)

Офлайн

#4 Янв. 24, 2013 01:11:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Как узнать индекс строки в списке строк ?

Luke
index() - глючит, он заново ищет линию, а там есть одинаковые, и возвращает номер первой попавшейся такой же линии (а не текущей)

>>> lst = [1, 2, 3, 2, 4, 5]
>>> start = 0
>>> lst.index(2, start)
1
>>> start = lst.index(2, start) + 1
>>> lst.index(2, start)
3
>>> start = lst.index(2, start) + 1
>>> lst.index(2, start)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 2 is not in list
>>>



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version