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.
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.
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.
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
.
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)
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