web-dev-qa-db-fra.com

Comment supprimer tous les caractères après un caractère spécifique en python?

J'ai une ficelle. Comment puis-je supprimer tout le texte après un certain caractère? ( Dans ce cas, ...)
Le texte après will ... changer donc c'est pourquoi je veux supprimer tous les caractères après un certain.

113
Solihull

Séparez votre séparateur au maximum une fois et prenez le premier morceau:

sep = '...'
rest = text.split(sep, 1)[0]

Vous n'avez pas dit ce qui devrait arriver si le séparateur n'est pas présent. Ceci et la solution d'Alex renverront la chaîne entière dans ce cas.

208
Ned Batchelder

En supposant que votre séparateur soit '...', il peut s'agir de n'importe quelle chaîne.

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 toute la chaîne d'origine.

La fonction de partition a été ajoutée dans Python 2.5.

partition (...) S.partition (sep) -> (tête, sep, queue)

Searches for the separator sep in S, and returns the part before it,
the separator itself, and the part after it.  If the separator is not
found, returns S and two empty strings.
73
Ayman Hourieh

Si vous voulez tout supprimer après la dernière occurrence de separator 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 souhaitez que le chemin du dossier, vous pouvez le diviser par "/".join(string_to_split.split("/")[:-1]) et vous obtiendrez root/location/child.

12
theannouncer

Sans RE (je suppose que c'est ce que vous voulez):

def remafterellipsis(text):
  where_Ellipsis = text.find('...')
  if where_Ellipsis == -1:
    return text
  return text[:where_Ellipsis + 3]

ou, avec un RE:

import re

def remwithre(text, there=re.compile(re.escape('...')+'.*')):
  return there.sub('', text)
9
Alex Martelli

un autre moyen facile en utilisant re sera

import re, clr

text = 'some string... this part will be removed.'

text= re.search(r'(\A.*)\.\.\..+',url,re.DOTALL|re.IGNORECASE).group(1)

// text = some string
0
Rohail