Python: ¿Cortar la última palabra de una oración?

¿Cuál es la mejor manera de dividir la última palabra de un bloque de texto?

Puedo pensar en

  1. Divídalo en una lista (por espacios) y elimine el último elemento, luego vuelva a clasificar la lista.
  2. Usa una expresión regular para reemplazar la última palabra.

Actualmente estoy tomando el enfoque # 1, pero no sé cómo concatenar la lista …

content = content[position-1:position+249] # Content words = string.split(content, ' ') words = words[len[words] -1] # Cut of the last word 

Cualquier ejemplo de código es muy apreciado.

    En realidad no es necesario dividir todas las palabras. Puede dividir su texto por el último símbolo de espacio en dos partes usando rsplit .

    Algunos ejemplos:

     >>> text = 'Python: Cut of the last word of a sentence?' >>> text.rsplit(' ', 1)[0] 'Python: Cut of the last word of a' 

    rsplit es una abreviatura de “división inversa” y, a diferencia de la split normal, funciona desde el final de una cadena. El segundo parámetro es un número máximo de divisiones a realizar, por ejemplo, el valor 1 le dará una lista de dos elementos como resultado (ya que se realizó una única división, lo que dio como resultado dos partes de la cadena de entrada).

    Definitivamente, debe dividir y luego eliminar la última palabra porque una expresión regular tendrá más complicaciones y una sobrecarga innecesaria. Puede usar el código más Pythonic (asumiendo que el contenido es una cadena):

     ' '.join(content.split(' ')[:-1]) 

    Esto divide el contenido en palabras, toma todo menos la última palabra y vuelve a unir las palabras con espacios.

    Si te gusta la compacidad:

     ' '.join(content.split(' ')[:-1]) + ' ...' 

    Si desea mantener su método actual, use ' '.join(words) para concatenar la lista.

    También es posible que desee reemplazar words = words[len[words -1] con words = words[:-1] para hacer uso de la división de listas.

    ' '.join(words) volverá a juntar la lista.

    O

     import re print ' '.join(re.findall(r'\b\w+\b', text)[:-1]) 

    Obtener el último índice de espacio y empalmar la cadena

     >>> text = 'Python: Cut of the last word of a sentence?' >>> text[:text.rfind(' ')] 'Python: Cut of the last word of a'