Python: Couper le dernier mot d'une phrase?

Quelle est la meilleure façon de couper le dernier mot d'un bloc de texte?

je pense

  1. séparez-le en une liste (par espaces) et supprimez le dernier élément, puis rapprochez la liste.
  2. Utiliser une expression régulière pour remplacer le dernier mot.

je suis en train d'adopter l'approche #1, mais je ne sais pas comment concaténer la liste...

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

Tous les exemples de code sont très appréciés.

36
demandé sur Darwin von Corax 2011-06-07 18:26:36

7 réponses

en fait, vous n'avez pas besoin de partager tous les mots. Vous pouvez diviser votre texte par le dernier symbole d'espace en deux parties en utilisant rsplit.

exemple:

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

rsplit est un raccourci pour "reverse split", et contrairement à des split les œuvres de la fin d'une chaîne. Le second paramètre est un nombre maximum de séparations à effectuer-par exemple la valeur de 1 vous donnera une liste de deux éléments comme résultat (puisqu'il y a eu une seule division faite, qui a abouti à deux des morceaux de la chaîne d'entrée).

115
répondu Roman Bodnarchuk 2018-01-16 17:14:40

Vous devriez certainement diviser et puis supprimer le dernier mot parce qu'un regex aura à la fois plus de complications et de frais généraux inutiles. Vous pouvez utiliser le code plus pythonique (en supposant que le contenu est une chaîne de caractères):

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

cela divise le contenu en mots, prend tout sauf le dernier mot, et rejoint les mots avec des espaces.

11
répondu murgatroid99 2011-06-07 14:32:54

Si vous aimez la compacité:

' '.join(content.split(' ')[:-1]) + ' ...'
5
répondu Giacomo d'Antonio 2011-06-07 14:35:43

Si vous voulez garder votre méthode actuelle, utilisez ' '.join(words) pour concaténer la liste.

Vous pouvez également remplacer words = words[len[words -1]words = words[:-1] pour utiliser le découpage de liste.

4
répondu NickAldwin 2011-06-07 14:31:33

' '.join(words) mettre la liste de retour ensemble.

3
répondu Wooble 2011-06-07 14:28:29

OR

import re

print ' '.join(re.findall(r'\b\w+\b', text)[:-1])
3
répondu Artsiom Rudzenka 2011-06-07 14:36:30

Obtenir le dernier index de l'espace et de l'épissure de la chaîne

>>> text = 'Python: Cut of the last word of a sentence?'
>>> text[:text.rfind(' ')]
'Python: Cut of the last word of a'
0
répondu Vikram Singh Chandel 2017-11-15 10:02:38