Найти - Пользователи
Полная версия: Нахождение подстроки в строке
Начало » Python для новичков » Нахождение подстроки в строке
1 2 3 4
ntram
VANISHED
py.user.next
Palrom
Зачем добавлять в новый список word, если результат нужен строго фиксированный ?
Если мы искомые слова подаём в качестве аргументов, то мы в любой момент можем сменить отлов “catch me” на отлов “hide her”, например. И вот когда ты сделаешь “hide her”, в конечный результат будет добавляться старое “catch me” и придётся менять этот участок кода ещё. А если у тебя это будет привычкой такой систематической, то тебе после каждого изменения кода в одном месте надо будет лазить по всему коду и менять все связанные куски, и это притом, что их ещё не так просто будет найти сходу. Надо будет их сначала найти все, потом надо будет их поменять. Почему надо будет их искать? Потому что может случиться так, что код тебе нужно будет менять через месяц или через полгода, и к тому времени ты уже не будешь помнить, где и что ты там делал в этом коде несколько месяцев назад. Поэтому надо всё параметризировать, делать общим, а управление этим всем выводить в одну точку, чтобы в ней легко можно было что-то поменять и вся программа при этом сразу правильно поменялась.

Palrom
Почему шаблон применяется только к “ме”?
Если запятую после catch поставить, то сломается код.
Такие не распознает
Whom do you want to catch? Me?
She is going to catch, me too.
Palrom
py.user.next
сменить отлов “catch me” на отлов “hide her”, например

Ну тогда наверное как-то так:
  
word = ['some', 'line', 'blablabla', 'you', 'dont', 'need', 'to',
        'catch', 'this', 'line', 'try', 'to', 'catching', 'me',
        'but', 'not', 'me', "I'm", 'here,', 'catch', 'me!!!']
 
def find_pair(wordlist, word1, word2):
    res = []
    for n, i in enumerate(wordlist):
        if n + 1 < len(wordlist):
            first, second = i, wordlist[n+1]
            if first[:len(word1)].lower() == word1 \
                    and second[:len(word2)].lower() == word2:
                res.append(f'{first} {second}')
    return res
 
print(find_pair(word, 'to', 'catch'))
Вывод:
 ['to catch', 'to catching']
  
print(find_pair(word, 'catch', 'me'))
Вывод:
 ['catching me', 'catch me!!!']
  
print(find_pair(word, 'need', 'to'))
Вывод:
 ['need to']
VladimirDeg
Ребята, простите меня конечно новичка, но из того, что я уже выучил, разве так нельзя?)
word = ['some', 'line', 'blablabla', 'you', 'dont', 'need', 'to', 'catch', 'this', 'line', 'try', 'to', 'catch', 'me', 'but', 'not', 'me', "I'm", 'here,', 'catch', 'me!!!']
s = "".join(word)
if "catchme" in s:
a = s.count("catchme")
l=[]
for i in range(a):
l.append("catch me")
print(a)
print(l)


ntram
И Вы когда-нибудь пробовали решать задачи самостоятельно?
Получается, что могу )
ntram
VANISHED
VladimirDeg
ntram
твой код съест что то на подобии “catch meal”
почему? поиск же четко по “catchme”
VladimirDeg
Ничо там не съедает. Проверил только что
ntram
VANISHED
Palrom

VladimirDeg
 if "catchme" in s:
    a = s.count("catchme")
А чего сразу-то не посчитать без in?
 a = s.count("catchime")
VladimirDeg
поиск же четко по “catchme”
Ну так ждали от вас деталей задания, что можно засчитывать, что нельзя. Но судя по всему у вас их и нет. Скрипт ваш подойдёт только для этого конкретного списка, т.е. он бесполезен будет в большинстве случаев.
Но для сдачи наверное пойдёт.
VladimirDeg
Ничо там не съедает.
Съедает. Более того catch!me пропустит.
py.user.next
Palrom
Ну тогда наверное как-то так:
  
...
 
def find_pair(wordlist, word1, word2):
    res = []
    for n, i in enumerate(wordlist):
        if n + 1 < len(wordlist):
            first, second = i, wordlist[n+1]
            if first[:len(word1)].lower() == word1 \
                    and second[:len(word2)].lower() == word2:
                res.append(f'{first} {second}')
    return res
 
...
 

Код
  
print(find_pair(word, 'catch', 'me'))
Вывод:
  
 ['catching me', 'catch me!!!']
Параметризация да (прошла успешно), а сравнение слов неправильно происходит. Если указано catch, например, то никакие catching не должны подходить под это сравнение.
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