J'ai une ficelle. Comment supprimer tout le texte après un certain caractère? ( Dans ce cas...
)
Le texte après ...
changera donc c'est pourquoi je veux supprimer tous les caractères après un certain.
J'ai une ficelle. Comment supprimer tout le texte après un certain caractère? ( Dans ce cas...
)
Le texte après ...
changera donc c'est pourquoi je veux supprimer tous les caractères après un certain.
Réponses:
Fendez au plus une fois sur votre séparateur et prenez le premier morceau:
sep = '...'
rest = text.split(sep, 1)[0]
Vous n'avez pas dit ce qui devrait se passer si le séparateur n'est pas présent. Cette solution et celle d'Alex renverront la chaîne entière dans ce cas.
En supposant que votre séparateur est '...', mais 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 souhaitez tout supprimer après la dernière occurrence de 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 du dossier, vous pouvez diviser par "/".join(string_to_split.split("/")[:-1])
et vous obtiendrez
root/location/child
Sans RE (ce 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)
La méthode find renverra la position du caractère dans une chaîne. Ensuite, si vous voulez tout supprimer du personnage, procédez comme suit:
mystring = "123⋯567"
mystring[ 0 : mystring.index("⋯")]
>> '123'
Si vous souhaitez conserver le caractère, ajoutez 1 à la position du caractère.
import re
test = "This is a test...we should not be able to see this"
res = re.sub(r'\.\.\..*',"",test)
print(res)
Sortie: "Ceci est un test"
À partir d'un fichier:
import re
sep = '...'
with open("requirements.txt") as file_in:
lines = []
for line in file_in:
res = line.split(sep, 1)[0]
print(res)