Запросто. Сходу копипаст первой функции из открытого работающего проекта (функция разделения строки на слова для подстрочного переводчика), распутывайте f5. def lex_split(s,lst_tr=[]): """ HaskellNote: lex_split:: s::String -> lexema::[word,delim,flag_tr] -> Text::[lexema,]""" concat=operator.concat; contains=operator.contains global alfavit_ru triger=True f1=lambda x:contains(alfavit_ru,x) def f2(x,(y,z)): if not triger: triger |= True; x+=[[u'',u'',True],]; x[-1][2]=z x[-1][0]+= y; return x def f3(x,(y,z)): x[-1][1]+=y; triger &= False; return x f5=lambda t:reduce(lambda x,(y,z):(f1(y) and f2(x,(y,z))) or f3(x,(y,z)),map(lambda a,b:(a,b or False),list(t),lst_tr),[[u'',u'',True],]) return f5(s)
|