Le problème étant de retirer '<br>' en fin de ligne,
'calendrier<br>'.strip('<br>')
donne 'calendrie' et non pas 'calendrier' comme on pourrait s'y attendre
si on ne lit pas la doc...
Pour arriver à cette fin, on peut utiliser :
if 'calendrier<br>'.endswith('<br>'):
'calendrier<br>'[:-4]
A cette heure là, je n'arrive pas à trouver mieux...
A+
jm
Un petit résumé des solutions: def rstringStrip1(s1,s2): r= s1 if s1.endswith(s2): r= s[:-len(s2)] return r def rstringStrip2(s1,s2): return s1[:len(s1)-len(s2)*(s1[-len(s2):]==s2)] def rstringStrip3(s1,s2): return s1[:-len(s2)]+s1[-len(s2):].replace(s2,'') def rstringStrip4(s1,s2): import re return re.compile(s2+'$',re.MULTILINE).sub('',s1) #-- s= 'calendrier<br>' print rstringStrip1(s,'<br>') print rstringStrip2(s,'<br>') print rstringStrip3(s,'<br>') print rstringStrip4(s,'<br>')
Méta-MCI
Bonsoir !
Dans :
def rstringStrip1(s1,s2): r= s1 if s1.endswith(s2): r= s[:-len(s2)] return r
Au lieu, d'utiliser la variable 'r', je préfère cette version :
def rstringStrip1(s1,s2): if s1.endswith(s2): return s1[:-len(s2)] else: return s1
Elle a l'avantage de ne faire qu'un traitement, selon le résultat du "if". De plus, si "if" est false, il n'y aura aucune modification des objets (internes).
@+
MCI
Bonsoir !
Dans :
def rstringStrip1(s1,s2):
r= s1
if s1.endswith(s2):
r= s[:-len(s2)]
return r
Au lieu, d'utiliser la variable 'r', je préfère cette version :
def rstringStrip1(s1,s2):
if s1.endswith(s2):
return s1[:-len(s2)]
else:
return s1
Elle a l'avantage de ne faire qu'un traitement, selon le résultat du "if".
De plus, si "if" est false, il n'y aura aucune modification des objets
(internes).
def rstringStrip1(s1,s2): r= s1 if s1.endswith(s2): r= s[:-len(s2)] return r
Au lieu, d'utiliser la variable 'r', je préfère cette version :
def rstringStrip1(s1,s2): if s1.endswith(s2): return s1[:-len(s2)] else: return s1
Elle a l'avantage de ne faire qu'un traitement, selon le résultat du "if". De plus, si "if" est false, il n'y aura aucune modification des objets (internes).
@+
MCI
erichuchet
Bonsoir !
Dans :
def rstringStrip1(s1,s2): r= s1 if s1.endswith(s2): r= s[:-len(s2)] return r
Au lieu, d'utiliser la variable 'r', je préfère cette version :
def rstringStrip1(s1,s2): if s1.endswith(s2): return s1[:-len(s2)] else: return s1
Elle a l'avantage de ne faire qu'un traitement, selon le résultat du "i f". De plus, si "if" est false, il n'y aura aucune modification des objets (internes).
def rstringStrip1(s1,s2):
r= s1
if s1.endswith(s2):
r= s[:-len(s2)]
return r
Au lieu, d'utiliser la variable 'r', je préfère cette version :
def rstringStrip1(s1,s2):
if s1.endswith(s2):
return s1[:-len(s2)]
else:
return s1
Elle a l'avantage de ne faire qu'un traitement, selon le résultat du "i f".
De plus, si "if" est false, il n'y aura aucune modification des objets
(internes).
def rstringStrip1(s1,s2): r= s1 if s1.endswith(s2): r= s[:-len(s2)] return r
Au lieu, d'utiliser la variable 'r', je préfère cette version :
def rstringStrip1(s1,s2): if s1.endswith(s2): return s1[:-len(s2)] else: return s1
Elle a l'avantage de ne faire qu'un traitement, selon le résultat du "i f". De plus, si "if" est false, il n'y aura aucune modification des objets (internes).
-- Encolpe DEGOUTE http://encolpe.degoute.free.fr/ Logiciels libres, hockey sur glace et autres activités cérébrales
Méta-MCI
Bonsoir !
comme ca meme pas de if :-)
Oui, mais ça n'est pas optimisé du tout, car Python doit construire un tuple, avant d'exécuter le test. (donc, la partie "s1[:-len(s2)]" sera systématiquement calculée, que ce soit nécessaire ou non).
@-salutations
Michel Claveau
Bonsoir !
comme ca meme pas de if :-)
Oui, mais ça n'est pas optimisé du tout, car Python doit construire un
tuple, avant d'exécuter le test. (donc, la partie "s1[:-len(s2)]" sera
systématiquement calculée, que ce soit nécessaire ou non).
Oui, mais ça n'est pas optimisé du tout, car Python doit construire un tuple, avant d'exécuter le test. (donc, la partie "s1[:-len(s2)]" sera systématiquement calculée, que ce soit nécessaire ou non).