2017-03-12 6 views
2

제발 누구나 내 의심을 분명히 해주세요 !!!! 나는 스택 오버플로에 대해 다음과 같은 질문을 이미 보았지만 원하는 출력을 얻지 못했습니다. 왜 코드가 스택 오버플로와 동일한 코드를 사용하여 원하는 출력을 제공하지 않는지 이해할 수 없습니다. 이 코드에서 잘못하고되었다 아래에있는 내 코드를 보면 문자열로 발생에 도처에 한 문자를 dictionery.Please의 매핑 된 값으로 문자열 도처에서 발생하는 키 값을 대체 할 대체 : -문자열에서 여러 문자가 파이썬으로 바뀝니다

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'