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
- séparez-le en une liste (par espaces) et supprimez le dernier élément, puis rapprochez la liste.
- 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.
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).
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.
Si vous aimez la compacité:
' '.join(content.split(' ')[:-1]) + ' ...'
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.
OR
import re
print ' '.join(re.findall(r'\b\w+\b', text)[:-1])
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'