2013-11-01 2 views
1

В Python им пытаются найти слово в sentece с использованием:найти слово в просто предложении, а не в слове (питон)

if word in sentence: 
    number = number + 1 

Это прекрасно работает для поиска слова в предложении, проблема, с которой сталкивается проблема, заключается в том, что этот код находит слово внутри других слов. Например:

word = "or" 
sentence = "Python or Java use a lot of words" 
if word in sentence: 
    number = number + 1 

число будет равно 2, а не 1, потому что «или» после «Python» и перед «Java», и он также находит «или» в слове «слово» Im пытается найти способ найти только слово «или» сам по себе, вместо того, чтобы программа находила его в предложении и в другом слове.

+1

В вашем примере число будет равно 1, а не 2, потому что 'if word in sentence' истинно, только один раз. Без какого-либо цикла и только одного, если вы не можете иметь число равное 2. –

+0

Для некоторых немного более продвинутых материалов см. Http://stackoverflow.com/q/13913530/2379410 –

+0

@Maxime справа, я забыл добавить цикл , – user2946078

ответ

6
"Python or Java use a lot of words".lower().split().count('or') 

должны это сделать.

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

+1

Очень pythonic, хорошо сделано – CDspace

+0

Это на самом деле единственный ответ, который действительно учитывает количество вхождений слова «или». –

+0

Удивительная благодарность за четкий ответ! – user2946078

0

Вы можете попробовать splitting в sentence первый, как это

if word in sentence.split(" "): 

Это поделит sentence в массив слов, предполагая, что все слова разделены одним пробелом. Это эквивалентно использованию

if word in [ "Python", "or", "Java", "use", "a", "lot", "of", "words" ]: 

, который будет проверять, если все слово существует в списке, а не проверять подстроки в исходной sentence

1

Вам необходимо разделить предложение первого использования str.split:

>>> sentence = "Python or Java use a lot of words" 
>>> sentence.split() 
['Python', 'or', 'Java', 'use', 'a', 'lot', 'of', 'words'] 
>>> 

Это даст вам список слов. После этого, ваш код будет работать:

>>> # I made this so I didn't get a NameError 
>>> number = 0 
>>> word = "or" 
>>> sentence = "Python or Java use a lot of words" 
>>> if word in sentence.split(): 
...  # This is the same as "number = number + 1" 
...  number += 1 
... 
>>> number 
1 
>>> 
+0

Почему «число + = 1», а не просто «число = 1»? Я не вижу, как число будет равно 2. –

Смежные вопросы