J'ai un ensemble de chaînes set1
et toutes les chaînes dans set1
ont deux sous-chaînes spécifiques dont je n'ai pas besoin et que je veux supprimer.
Exemple d'entrée:
set1={'Apple.good','Orange.good','Pear.bad','Pear.good','Banana.bad','Potato.bad'}
Donc, fondamentalement, je veux que les sous .good
- .bad
chaînes et soient supprimées de toutes les chaînes.
Ce que j'ai essayé:
for x in set1:
x.replace('.good','')
x.replace('.bad','')
Mais cela ne semble pas du tout fonctionner. Il n'y a absolument aucun changement dans la sortie et c'est la même chose que l'entrée. J'ai essayé d'utiliser à la for x in list(set1)
place de l'original mais cela ne change rien.
la source
string.replace()
est obsolète sur python 3.x, maintenant il l'eststr.replace()
.replace
ne change pas la chaîne, il retourne une copie de la chaîne avec le remplacement. Vous ne pouvez pas modifier la chaîne directement car les chaînes sont immuables.Vous devez extraire les valeurs de retour
x.replace
et les placer dans un nouvel ensemble.la source
Tout ce dont vous avez besoin est un peu de magie noire!
la source
Vous pouvez faire ceci:
la source
x.replace('.good',' ')
etx.replace('.bad',' ')
ne fait rien au résultat final. L'impression sera la même sans eux.re.sub
, comme ceci:x = re.sub('((\.good$)|(\.bad$))', '', x)
replace
s et tout déplacer en un seulre.sub
appel)J'ai fait le test (mais ce n'est pas votre exemple) et les données ne les renvoient ni ordonnées ni complètes
J'ai prouvé que cela fonctionne:
ou
la source
Lorsqu'il y a plusieurs sous-chaînes à supprimer, une option simple et efficace consiste à utiliser
re.sub
avec un modèle compilé qui implique de joindre toutes les sous-chaînes à supprimer à l'aide du|
tube regex OR ( ).la source
Si liste
Je faisais quelque chose pour une liste qui est un ensemble de chaînes et vous voulez supprimer toutes les lignes qui ont une certaine sous-chaîne, vous pouvez le faire
où
sub
est un motif que vous ne souhaitez pas avoir dans une liste de lignesLinSplitUnOr
par exemple
Alors
A
serala source
si vous supprimez quelque chose de la liste, vous pouvez utiliser cette méthode: (la méthode sub est sensible à la casse)
la source