J'ai une ficelle. Comment supprimer tout le texte après un certain caractère ? ( Dans ce cas ...
)
Le texte suivant ...
C'est pourquoi je souhaite supprimer tous les caractères après un certain nombre d'entre eux.
Réponses
Trop de publicités?Partagez votre séparateur au maximum une fois, et prenez le premier morceau :
sep = '...'
stripped = text.split(sep, 1)[0]
Vous n'avez pas dit ce qui doit se passer si le séparateur n'est pas présent. Tant ceci que La solution d'Alex renverra la chaîne entière dans ce cas.
En supposant que votre séparateur soit '...', il peut s'agir de n'importe quelle chaîne de caractères.
text = 'some string... this part will be removed.'
head, sep, tail = text.partition('...')
>>> print head
some string
Si le séparateur n'est pas trouvé, head
contiendra la totalité de la chaîne originale.
En partition a été ajoutée dans Python 2.5.
S.partition(sep)
->(head, sep, tail)
Recherche du séparateur sep en S et renvoie la partie précédente, le séparateur lui-même, et la partie qui le suit. Si le séparateur n'est pas n'est pas trouvé, il renvoie S et deux chaînes vides.
Si vous souhaitez supprimer tout ce qui se trouve après la dernière occurrence du séparateur dans une chaîne, je trouve que cela fonctionne bien :
<separator>.join(string_to_split.split(<separator>)[:-1])
Par exemple, si string_to_split
est un chemin comme root/location/child/too_far.exe
et que vous ne voulez que le chemin d'accès au dossier, vous pouvez diviser par "/".join(string_to_split.split("/")[:-1])
et vous obtiendrez root/location/child
Sans expression régulière (ce que je suppose être ce que vous voulez) :
def remafterellipsis(text):
where_ellipsis = text.find('...')
if where_ellipsis == -1:
return text
return text[:where_ellipsis + 3]
ou, avec une expression régulière :
import re
def remwithre(text, there=re.compile(re.escape('...')+'.*')):
return there.sub('', text)
- Réponses précédentes
- Plus de réponses