Как определить, находится ли слово в строке?
Использование только in
недостаточно...
Что-то вроде:
>>> wordSearch('sea', 'Do seahorses live in reefs?')
False
>>> wordSearch('sea', 'Seahorses live in the open sea.')
True
@ Кевин, нет, не так. Другой вопрос, другая проблема, другой ответ.
почему вы опубликовали тот же ответ на один из других вопросов, которые я пометил как дубликат? stackoverflow.com/a/65453803/5517088
Я разместил свое решение там, потому что принятое решение, по крайней мере, неполное. Проверьте это, чтобы увидеть.
Как насчет разделения строки и удаления слов со знаками препинания, не забывая о регистре?
w in [ws.strip(',.?!') for ws in p.split()]
Может так:
def wordSearch(word, phrase):
punctuation = ',.?!'
return word in [words.strip(punctuation) for words in phrase.split()]
# Attention about punctuation (here ,.?!) and about split characters (here default space)
Образец:
>>> print(wordSearch('Sea'.lower(), 'Do seahorses live in reefs?'.lower()))
False
>>> print(wordSearch('Sea'.lower(), 'Seahorses live in the open sea.'.lower()))
True
Я перенес преобразование case в вызов функции, чтобы упростить код...
И я не проверял спектакли.
слово в строке может быть истинным для первого примера
Используйте ключевое слово in
:
что-то вроде этого:
print('Sea'in 'Seahorses live in the open sea.')
Если вы не хотите, чтобы он был чувствительным к регистру. преобразовать все жало в lower
или upper
что-то вроде этого:
string1 = 'allow'
string2 = 'Seahorses live in the open sea Allow.'
print(string1.lower() in string2.lower())
или вы можете использовать метод find
следующим образом:
string1 = 'Allow'
string2 = 'Seahorses live in the open sea Allow.'
if string2.find(string1) !=-1 :
print('yes')
Если вы хотите сопоставить точное слово:
string1 = 'Seah'
string2 = 'Seahorses live in the open sea Allow.'
a = sum([1 for x in string2.split(' ') if x == string1])
if a > 0:
print('Yes')
else:
print('No')
обновлять
вам нужно игнорировать все знаки препинания, поэтому используйте это.
def find(string1, string2):
lst = string2.split(' ')
puctuation = [',', '.', '!']
lst2 = []
for x in lst:
for y in puctuation:
if y in x[-1]:
lst2.append(x.replace(y, ''))
lst2.append(x)
lst2.pop(-1)
a = sum([1 for x in lst2 if x.lower() == string1.lower()])
if a > 0:
print('Yes')
else:
print('No')
find('sea', 'Seahorses live in the open sea. .hello!')
Ключевое слово «in» также ищет подстроки, поэтому оно также будет соответствовать морскому коньку... Нехорошо...
@марсио какой? последний?
он имеет в виду слово, окруженное границами, а не подстроку
@marcio обратите внимание, что это чувствительно к регистру.
@marcio, у меня отлично работает, в чем проблема?
Попробуйте с: string1 = 'sea'
string2 = 'Seahorses live in the open sea.'
Точка сходится в разделении...
@marcio проверьте мою правку и скажите, работает ли она нормально.
Да, это работает! НО вы только проверяете окончание правильной пунктуации! Лучше бы убрать левый и правый! И внимание, ваш код начинает усложняться! Хорошая работа!
@marcio просто убери [-1] в x[-1]
там. Кроме того, если вы нашли это полезным, не забудьте принять ответ
Отвечает ли это на ваш вопрос? Python — проверьте, находится ли слово в строке или иначе ( stackoverflow.com/questions/3897942/…)