2016-05-08 3 views
-1

Меня попросили найти, где в предложении появится слово ввода. Я выяснил, как сделать его регистром нечувствительным и выбрал, какое слово найти, но у меня возникают проблемы с его отображением позиции слова. Вот что у меня есть:Поиск определенных слов в предложении

enter code here 

sntc = input("Please type in a sentence without punctuation:") 
print("This is the sentence you input:",sntc) 
wrd = input("Please enter a word you want to search for in the sentence:") 
print("The word requested to be seacrhed for is:",wrd) 
sntcLow = sntc.lower() 
wrd1 = wrd.lower() 
SenLst = [] 
SenLst.append(sntcLow) 
print(SenLst) 
if any(wrd1 in s for s in SenLst): 
    print("Search successful. The word '",wrd1,"' has been found in position(s):") 
else: 
    print("Search unsuccessful. The word '",wrd1,"' was not found. Please try another word...") 

ответ

1

Вы можете использовать метод find для строк, чтобы сделать это.

Он возвращает -1, если подстрока не найдена в строке или возвращает индекс, где начинается подстрока, если найден.

Если вам нужен фактический индекс охвата (начало, конец), где происходит эта подстрока. Вы можете объединить длину слова с начальным индексом для полного диапазона.

+0

Можете ли вы привести пример поиска индекса spanning? –

+0

Обнаружение этого только говорит мне начальную позицию символа слова. Я хочу найти, в каких позициях находится слово. Например: Если предложение было «Толстый кот съел жирную мышь», тогда я бы хотел, чтобы он печатался «Слово« жир »появляется во 2-й и 6-й позициях. Как мне это сделать? –

2

Чтобы найти определенную позицию слов в предложении, вам сначала нужно разделить предложение на слова, а затем найти положение этого слова.

>>> sentence = 'The fat cat ate a fat mouse' 
>>> words = sentence.split() 
>>> words 
['The', 'fat', 'cat', 'ate', 'a', 'fat', 'mouse'] 

Теперь вы можете использовать index, чтобы найти расположение жира.

>>> words.index('fat') 
1 

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

Итак, теперь вы можете пройти через список и найти, соответствует ли оно слову.

>>> positions = [indx+1 for indx, word in enumerate(words) if word == 'fat'] 
>>> positions 
[2, 6] 
Смежные вопросы