Comment faire pour supprimer tous les caractères après un caractère spécifique en python?
-
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.
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