2017-03-12 177 views
2

请有人澄清我的疑问!!!! 我已经看到了堆栈溢出的相同问题的以下帖子,但仍然没有得到所需的输出。我不明白为什么我的代码没有给出所需的输出使用堆栈溢出给出的相同的代码。我想问什么是我在此代码做错了更换一个字符的字符串存在的everywhere.I要替换的键值字符串中到处存在的入dictionery.Please其映射值看看下面我的代码: -多个字符替换为一个字符串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 

但是我也得到了与输出相同的输入字符串,不要在代码中遇到什么问题。

有人请帮帮我。

回答

2

str.replace不会在原地更改字符串,但会返回新的替换字符串。

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

您需要返回的字符串分配回变量:

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

如果要替换多个字符,你可能要考虑使用str.translate()

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