¿Cómo extraer las primeras y últimas palabras de una cadena?

Tengo un pequeño problema con algo que necesito hacer en la escuela …

Mi tarea es obtener una cadena de entrada sin procesar de un usuario ( text = raw_input() ) y necesito imprimir la primera y la última palabra de esa cadena.

¿Puede alguien ayudarme con eso? He estado buscando una respuesta todo el día …

Primero debe convertir la cadena a una list de palabras usando str.split y luego puede acceder a ella como:

 >>> my_str = "Hello SO user, How are you" >>> word_list = my_str.split() # list of words # first word vv last word >>> word_list[0], word_list[-1] ('Hello', 'you') 

Desde Python 3.x , simplemente puedes hacer:

 >>> first, *middle, last = my_str.split() 

Si está utilizando Python 3, puede hacer esto:

 text = input() first, *middle, last = text.split() print(first, last) 

Todas las palabras, excepto la primera y la última, entrarán en la variable del middle .

Digamos que x es su entrada. Entonces usted puede hacer:

  x.partition(' ')[0] x.partition(' ')[-1] 

Algunos podrían decir que nunca hay demasiadas respuestas usando expresiones regulares (en este caso, esto parece ser la peor solución …):

 >>> import re >>> string = "Hello SO user, How are you" >>> matches = re.findall(r'^\w+|\w+$', string) >>> print(matches) ['Hello', 'you'] 

Tu harías:

 print text.split()[0], text.split()[-1] 

Simplemente pase su cadena en la siguiente función :

 def first_and_final(str): res = str.split(' ') fir = res[0] fin = res[len(res)-1] return([fir, fin]) 

Uso

 first_and_final('This is a sentence with a first and final word.') 

Resultado :

 ['This', 'word.']