2017-03-12 1 views
2

S'il vous plaît tout le monde clarifier mon doute !!!! J'ai déjà vu les messages suivants de la même question sur le débordement de la pile, mais n'obtenant toujours pas la sortie désirée.Je ne comprends pas pourquoi mon code ne donne pas la sortie désirée en utilisant le même code que sur stack overflow. je faisais mal dans ce code pour remplacer un caractère de chaîne everywhere.I survenant veulent remplacer la valeur de clé partout dans le survenant chaîne dans sa valeur mappée de la dictionery.Please regarder mon code ci-dessous: -Plusieurs caractères remplacent dans une chaîne python

for _ in range(input()): 
    n=input() 
    c={} 
    for i in range(n): 
     a,b=raw_input().split() 
     #print ord(a),ord(b) 
     c[a]=b 
    s=raw_input() 
    for i in c.keys(): 
     s.replace(i,c[i]) 
    print s 

input:-          desired output:- Getting output:- 
4            3     5 
2            01800.00   01800.00 
5 3           0.00100   0.00100 
3 1           00321.330980  0xd21#dd098x 
5 
0 
01800.00 
0 
0.00100 
3 
x 0 
d 3 
# . 
0xd21#dd098x 

Mais je reçois la même chaîne d'entrée que la sortie aussi, n'obtenez pas quel est le problème dans le code.

Quelqu'un s'il vous plaît aidez-moi.

Répondre

2

str.replace ne modifie pas la chaîne sur place, mais renvoie une nouvelle chaîne remplacée.

>>> s = 'ax' 
>>> s.replace('a', 'b') # returns a new string 
'bx' 
>>> s # the string that `s` refers does not change 
'ax' 

Vous devez assigner la chaîne retourné à la variable:

s = s.replace(i, c[i]) 
0

Si vous voulez remplacer plusieurs caractères, vous voudrez peut-être envisager d'utiliser str.translate():

>>> string = "abcdef" 
>>> trans_table = str.maketrans({'a': 'x', 'c': 'y'}) 
>>> string.translate(trans_table) 
'xbydef'