Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 13, 2019 15:00:32

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Нужна помощь по регулярным выражением re

что только не сделаешь чтоб только не регекспы

 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
зы думаю над генератором хотя наверное не стоит это будет что то монстро подобное
ззы поправлена секция else



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Сен. 13, 2019 15:36:08)

Офлайн

#2 Сен. 13, 2019 15:58:02

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Нужна помощь по регулярным выражением re

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"))



Офлайн

#3 Сен. 13, 2019 16:33:11

oldjaponec@gmail.com
Зарегистрирован: 2019-09-03
Сообщения: 13
Репутация: +  1  -
Профиль   Отправить e-mail  

Нужна помощь по регулярным выражением re

vic57
Тоже пробовал подобное решение

Офлайн

#4 Сен. 13, 2019 16:35:03

oldjaponec@gmail.com
Зарегистрирован: 2019-09-03
Сообщения: 13
Репутация: +  1  -
Профиль   Отправить e-mail  

Нужна помощь по регулярным выражением re

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)

Офлайн

#5 Сен. 13, 2019 16:39:53

oldjaponec@gmail.com
Зарегистрирован: 2019-09-03
Сообщения: 13
Репутация: +  1  -
Профиль   Отправить e-mail  

Нужна помощь по регулярным выражением re

AD0DE412
что только не сделаешь чтоб только не регекспы

c регекспами у меня очень плохие отношения, иногда получается использовать, но чаще совмещать с тем, что они выдают на практике, ибо на практике, у меня, почему-то, они могут выдавать всё что угодно, а не то, что от них ожидаешь

Офлайн

#6 Сен. 13, 2019 16:42:17

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Нужна помощь по регулярным выражением re

FishHook умеете вы растраивать. <самоирония> мне между прочим, Лутц, в своем изучяем питон, сегодня доверительно сообщил, мол я тепереча пайтон девлопер )) </самоирония>
зы спсб надо посмтреть я правильно понимаю itertools.takewhile это аналог for - if



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Сен. 13, 2019 16:43:26)

Офлайн

#7 Сен. 13, 2019 16:46:54

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Нужна помощь по регулярным выражением re

oldjaponec@gmail.com
c регекспами у меня очень плохие отношения
счасливчик плохие отношения лучше чем ни какие как у меня например



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#8 Сен. 13, 2019 17:14:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Нужна помощь по регулярным выражением re

AD0DE412
itertools.takewhile это аналог for - if
разумеется, нет
Любую синтаксическую конструкцию можно построить на основе двух опреторов - if и goto. Это что значит, что все функции стандартной библиотеки это аналог if - goto?

Знаете, почему у вас получился не очень красивый код? Это потому что вы не алгоритмируете, а “пишите на языке”. Сначала надо придумать алгоритм, прокрутить его в голове. Если вам дать эту же задачу решить без компьютера, то вы выполните её в один проход с минимальным количеством стравнений. А питон это только средство выражения алгоритма. Если у вас есть хороший алгоритм, то и программа на питоне получится хорошей.



Офлайн

#9 Сен. 13, 2019 18:16:30

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Нужна помощь по регулярным выражением re

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)

Офлайн

#10 Сен. 13, 2019 21:07:26

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Нужна помощь по регулярным выражением re

ну чтош … вот … мне наука, а политрук Лутц лжот
пойду выпью … чая



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version