Encontrar la posición de una palabra en una cadena

Con:

sentence= input("Enter a sentence") keyword= input("Input a keyword from the sentence") 

Quiero encontrar la posición de la palabra clave en la oración. Hasta ahora, tengo este código que elimina la puntuación y hace que todas las letras sean minúsculas:

 punctuations = '''!()-[]{};:'"\,./?@#$%^&*_~'''#This code defines punctuation #This code removes the punctuation no_punct = "" for char in sentence: if char not in punctuations: no_punct = no_punct + char no_punct1 =(str.lower (no_punct) 

Sé que necesito una pieza de código que realmente encuentre la posición de la palabra.

Esto es para lo que str.find() es:

 sentence.find(word) 

Esto le dará la posición de inicio de la palabra (si existe, de lo contrario -1), entonces puede agregarle la longitud de la palabra para obtener el índice de su final.

 start_index = sentence.find(word) end_index = start_index + len(word) # if the start_index is not -1 

Si con posición te refieres a la enésima palabra en la oración, puedes hacer lo siguiente:

 words = sentence.split(' ') if keyword in words: pos = words.index(keyword) 

Esto dividirá la oración después de cada aparición de un espacio y guardará la oración en una lista (en palabras). Si la oración contiene la palabra clave, list.index () encontrará su posición.

EDITAR :

La instrucción if es necesaria para asegurarse de que la palabra clave esté en la oración, de lo contrario list.index () generará un ValueError.