2011-01-13 3 views
1


Je ne sais pas comment j'expliquer cela, mais voilà ...Python: Fonction inverse Remplacer

>>> x = 'qwertyHelloWorldasdfg' 
>>> x = inversereplace(x, 'HelloWorld', 'a') 
>>> print x 
aaaaaaHelloWorldaaaaaa 

>>> y = 'qwertyHelloWorld' 
>>> y = inversereplace(y, 'qwerty', '') 
>>> print y 
qwerty 

Dans la fonction ci-dessus, il remplace tout x qui ne pas la 2ème argument avec le 3ème argument.
Comment ferais-je cela?
S'il y a déjà une fonction qui fait cela alors s'il vous plaît faites le moi savoir.

Merci à l'avance,
~ DragonXDoom

+0

Avez-vous un cas d'utilisation dans le monde réel pour cela? Je ne peux pas surmonter le soupçon qu'il doit y avoir un meilleur moyen ... – simon

Répondre

4

Cela devrait fonctionner:

def inversereplace(text, word, repl): 
    parts = text.split(word) 
    return word.join(repl*len(x) for x in parts) 
+0

D'oh, battez-moi! De plus, utilisé cool liste-compréhension. Alack-a-day, sacré ... – Malvolio

+0

Merci beaucoup! – DragonXDoom

1
def inversereplace(s, p, q): 
    s = s.split(p) 
    s = map(lambda x: q * len(x), s) 
    return p.join(s) 
+0

Quoi, vous utilisez 'map' et' lambda', mais votre 's' n'est pas immuable? :) – 9000

+0

Si je devais le faire à nouveau maintenant (30 mois plus tard), je pourrais écrire: 'def inverserplace (s, p, q): retourner p.join (map (lambda x: q * len (x), s .split (p)) ' – Malvolio

Questions connexes