Найти - Пользователи
Полная версия: Нахождение подстроки в строке
Начало » Python для новичков » Нахождение подстроки в строке
1 2 3 4
VladimirDeg
Здравствуйте!
Дан список из строк
word = ['some', 'line', 'blablabla', 'you', 'dont', 'need', 'to', 'catch', 'this', 'line', 'try', 'to', 'catch', 'me', 'but', 'not', 'me', "I'm", 'here,', 'catch', 'me!!!']
В нем нужно найти все словосочетания “catch me” и их кол-ва
Только с “catch” получается:
 
new_list = []
for i in word:
if i == "catch":
new_list.append(i)
a = len(new_list)
print(new_list)
print(a)
а как вытащить две строки вподряд? Получается будет только 2 сопадения
ntram
  
from string import punctuation, digits
 
word = ['some', 'line', 'blablabla', 'you', 'dont', 'need', 'to', 'catch', 'this', 'line', 'try', 'to', 'catch', 'me', 'but', 'not', 'me', "I'm", 'here,', 'catch', 'me!!!']
 
new_list = []
previous_word = None
 
for i in word:
    word_ ,= "".join(j if j not in (punctuation + digits) else "" for j in i).split()
    if word_ == "me" and previous_word == "catch":
        new_list.append("catch me")
    previous_word = word_
 
print(new_list)
print(len(new_list))

И Вы когда-нибудь пробовали решать задачи самостоятельно?
FishHook
ntram
1. Ваш код споткнется на
"m!!e", "ca(tch)"
и тому подобном
2. не стоит делать повторяющихся вычислений в цикле
 (punctuation + digits)
3. Объясните, пожалуйста, что делает в вашем коде .split(), я не понял смысла этого алгоритма
ntram
FishHook
Ваш код споткнется на “m!!e”, “ca(tch)”
исправлю
FishHook
не стоит делать повторяющихся вычислений в цикле
исправлю
FishHook
Объясните, пожалуйста, что делает в вашем коде .split()
удаляет такие символы как
 " ", "\n"

ща изменю алгоритм этого всего
FishHook
ntram
наверное тогда strip() а не split()??
ntram
  
word = ['some', 'line', 'blablabla', 'you', 'dont', 'need', 'to', 'catch', 'this', 'line', 'try', 'to', 'catch', 'me', 'but', 'not', 'me', "I'm", 'here,', 'catch', 'me!!!']
 
new_list = []
previous_word = ""
 
for i in word:
    if "me" in i.lower() and "catch" in previous_word.lower():
        new_list.append(f"{previous_word} {i}")
 
    previous_word = i
 
print(new_list)
print(len(new_list))

более правильный код и проще
py.user.next
ntram
  
if "me" in i.lower() and "catch" in previous_word.lower():
ntram
более правильный код и проще
Съест такие пары типа
catch smew
catching women
catchment smells
FishHook
ntram
new_list.append(f“{previous_word} {i}”)

 а в чем глубокий смысл создания такого списка, мы же знаем, что он будет состоять из слов “catch me”?
ZerG
Тз не совсем понятно
из каких пар таки дожно состоять catch me
из произвольного набора илиже только там где ME идет сразу после catch?
ntram
FishHook
а в чем глубокий смысл создания такого списка, мы же знаем, что он будет состоять из слов “catch me”?
чтобы знаки восклицания тоже были
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