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

StackOverflow https://stackoverflow.com/questions/904746

  •  05-09-2019
  •  | 
  •  

Question

J'ai une chaîne. Comment puis-je supprimer tout le texte après un certain caractère? ( Dans ce cas ... )
Le texte AFTER ... changement donc je qui est la raison pour laquelle je veux supprimer tous les caractères après un certain un.

Était-ce utile?

La solution

Split votre séparateur au plus une fois, et prendre la première pièce:

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

Vous ne dites pas ce qui devrait se produire si le séparateur est pas présent. Les deux cela et la solution d'Alex retournera la chaîne entière dans ce cas.

Autres conseils

En supposant que votre séparateur est « ... », mais il peut être une chaîne.

text = 'some string... this part will be removed.'
head, sep, tail = text.partition('...')

>>> print head
some string

Si le séparateur ne se trouve pas, head contiendra toutes la chaîne d'origine.

La fonction de partition a été ajouté dans le python 2.5.

  partition

(...)       S.partition (septembre) -> (tête, septembre, 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.

Si vous voulez supprimer tout ce qui suit la dernière occurrence de séparateur dans une chaîne que je trouve 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 voulez que le chemin du dossier, vous pouvez diviser par "/".join(string_to_split.split("/")[:-1]) et vous obtiendrez root/location/child

Sans RE (que je suppose 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)

un autre moyen facile à l'aide 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top