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