Найти - Пользователи
Полная версия: Как узнать индекс строки в списке строк ?
Начало » Python для новичков » Как узнать индекс строки в списке строк ?
1
Luke
Вроде бы должно быть очень просто , но не пойму как ?
есть такой код:
	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 тут вообще пятое колесо
reclosedev
Не совсем понял, что хотите, но подозреваю, что это:
for i, line in enumerate(lines):
    print i, pattern.parseString(line)
Luke
Спасибо, то что нужно.

___________________________________________________________________________________
try:
except:
у меня тут как замена
if pattern.parseString(line)==true:
но так не работает, так как parseString() вызывает исключение если не находит образец,
это функция из модуля pyparsing
py.user.next
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
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB