python split concatenation word text-segmentation

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



split concatenation (7)

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

Puedo pensar en

  1. Dividirlo en una lista (por espacios) y eliminar el último elemento, luego volver a concatenar la lista.
  2. Use 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.


Definitivamente debe dividir y luego eliminar la última palabra porque una expresión regular tendrá complicaciones más y una sobrecarga innecesaria. Puedes 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 todas las palabras menos la última y vuelve a unir las palabras con espacios.


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

Un ejemplo:

>>> 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 los trabajos de split regulares desde el final de una cadena. El segundo parámetro es un número máximo de divisiones por hacer, por ejemplo, el valor de 1 le dará una lista de dos elementos como resultado (ya que hubo una única división hecha, que dio como resultado dos partes de la cadena de entrada).


O

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


Obtenga el último índice de espacio y empalme la cadena

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


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 lista de corte.


Si te gusta la compacidad:

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


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