Форум сайта python.su
что только не сделаешь чтоб только не регекспы
s = 'arefhertyjertyaref!!' step_1= [] test = len(s)//2 ind_for = 1 ind_append = 0 for i in range(test): for j in range(test + ind_for): step_1.append(s[j : test + j + ind_append]) ind_for += 1 ind_append -= 1 step_2 = [] for i in range(len(step_1)): if step_1[i] in step_1[i + len(step_1[i]):]: step_2.append(step_1[i]) if len(step_2) == 0: print("решения нет") elif len(step_2) == 1: print(step_2) else: # исправлено step_3 = [step_2[0]] for i in range(len(step_2)): if len(step_2[i]) == len(step_2[i + 1]): step_3.append(step_2[i + 1]) else: print(step_3) break
Отредактировано AD0DE412 (Сен. 13, 2019 15:36:08)
Офлайн
AD0DE412
from itertools import takewhile def find_longest_substr(string): longest_seq = "" s = string while s: char = s[0] seq = list(takewhile(lambda i: i == char, s)) length = len(seq) if length > len(longest_seq): longest_seq = seq s = s[length:] return "".join(longest_seq) print(find_longest_substr("0111112222"))
Офлайн
vic57Тоже пробовал подобное решение
Офлайн
import re
l='arefhjaref!!'
for i in range(len(l)//2, 0, -1):
s=r"(.{"+str(i)+r",}).*?\1"
a=re.findall(s,l)
if a:print(str(a));break
Отредактировано oldjaponec@gmail.com (Сен. 13, 2019 17:05:16)
Офлайн
AD0DE412
что только не сделаешь чтоб только не регекспы
Офлайн
FishHook умеете вы растраивать. <самоирония> мне между прочим, Лутц, в своем изучяем питон, сегодня доверительно сообщил, мол я тепереча пайтон девлопер )) </самоирония>
зы спсб надо посмтреть я правильно понимаю itertools.takewhile это аналог for - if
Отредактировано AD0DE412 (Сен. 13, 2019 16:43:26)
Офлайн
oldjaponec@gmail.comсчасливчик плохие отношения лучше чем ни какие как у меня например
c регекспами у меня очень плохие отношения
Офлайн
AD0DE412разумеется, нет
itertools.takewhile это аналог for - if
Офлайн
AD0DE412данная задача легко решается через срезы
счасливчик плохие отношения лучше чем ни какие как у меня например
s = 'arefhjaref!!' out = [] for i in range(len(s)): t = s[i:] for j in range(len(t),1,-1): s1,s2 = t[:j],t[j:] f = s2.find(s1) if f > 0: out.append(s1) break out.sort(key = lambda x: len(x),reverse=True) print(out)
Отредактировано vic57 (Сен. 13, 2019 18:25:04)
Офлайн
ну чтош … вот … мне наука, а политрук Лутц лжот
пойду выпью … чая
Офлайн