请有人澄清我的疑问!!!! 我已经看到了关于堆栈溢出的相同问题的以下帖子,但仍未获得所需的输出。我不明白为什么我的代码没有使用堆栈溢出时给出的相同代码给出所需的输出。我想问一下我在这段代码中做错了什么来替换字符串中出现的字符串中的一个字符。我想将字符串中到处出现的键值替换为其字典的映射值。请查看下面的代码: -
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
但是我也得到了与输出相同的输入字符串,没有得到代码中的问题。
有人请帮助我。
答案 0 :(得分: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])
答案 1 :(得分:0)
如果要替换多个字符,可能需要考虑使用str.translate()
:
>>> string = "abcdef"
>>> trans_table = str.maketrans({'a': 'x', 'c': 'y'})
>>> string.translate(trans_table)
'xbydef'