web-dev-qa-db-fra.com

Python: Couper le dernier mot d'une phrase?

Quel est le meilleur moyen de couper le dernier mot d'un bloc de texte? 

Je peux penser à 

  1. Divisez-le en une liste (par des espaces) et supprimez le dernier élément, puis réconcatez la liste.
  2. Utilisez une expression régulière pour remplacer le dernier mot.

Je suis en train de prendre l'approche n ° 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.

39
qwerty

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

Quelques exemples:

>>> 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 à split normal fonctionne à partir de la fin d'une chaîne. Le deuxième paramètre est un nombre maximal de divisions à effectuer - par exemple. La valeur de 1 vous donnera une liste de deux éléments (étant donné qu’un seul fractionnement a été fait, ce qui a entraîné deux parties de la chaîne d’entrée).

121
Roman Bodnarchuk

Vous devez absolument scinder puis supprimer le dernier mot, car une expression rationnelle entraînera à la fois plus de complications et de frais généraux inutiles. Vous pouvez utiliser le plus de code Pythonic (en supposant que le contenu est une chaîne):

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

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

11
murgatroid99

Si vous aimez la compacité:

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

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

Vous pouvez également vouloir remplacer words = words[len[words -1] par words = words[:-1] pour utiliser le découpage en tranches.

4
NickAldwin

OU 

import re

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

' '.join(words) remettra la liste.

3
Wooble

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

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