Вы можете написать свой собственный раскол функции для списков довольно легко с помощью выхода:
def split_list(l, sep):
current = []
for x in l:
if x == sep:
yield current
current = []
else:
current.append(x)
yield current
Альтернативный способ заключается в использовании list.index
и поймать исключение:
def split_list(l, sep):
i = 0
try:
while True:
j = l.index(sep, i)
yield l[i:j]
i = j + 1
except ValueError:
yield l[i:]
В любом случае вы можете позвонить это так:
l = ['(', '2', '.', 'x', '.', '(', '3', '-', '1', ')', '+', '4', ')',
'/', '3', '.', 'x', '^', '2']
for r in split_list(l, '+'):
print r
Результат:
['(', '2', '.', 'x', '.', '(', '3', '-', '1', ')']
['4', ')', '/', '3', '.', 'x', '^', '2']
Для разбора в Python вы также можете посмотреть что-то вроде pyparsing.
[Python Lex-Yacc (PLY)] (http://www.dabeaz.com/ply/) и [PyPEG] (http://fdik.org/pyPEG/) тоже хороши. – exupero