2016-09-14 4 views
0

l3에서 l1 및 l2와 비교하여 문자 및/또는 문자열을 대체합니다. 내가 얻는 결과물과 얻고 자하는 결과물은 아래와 같습니다.목록에서 문자열의 문자를 교체하십시오.

내 코드

l1 = ["Jai","Sharath","Ravi","Aditya"] 
l2 = ["Singh","Kumar","Sharma","Rao"] 
l3 = ["J.Singh","Sharath_K","R-Sharma","Rao_Aditya"] 
for x,y,z in zip(l1,l2,l3): 
    if x in z: 
    z.replace(x,"Firstname") 
    elif x[0] in z: 
    z.replace(x[0],"First/Character/of/first/name") 
    elif y in z: 
    z.replace(y,"lastname") 
    else: 
    z.replace(y[0],"First/Character/of/last/name") 

내 출력

'First/Character/of/first/name.Singh' 
'Firstname_K' 
'First/Character/of/first/name/Sharma' 
'Rao_Firstname' 

내 예상 출력

'First/Character/of/first/name.lastname' 
'Firstname_First/Character/of/last/name' 
'First/Character/of/first/name/lastname' 
'lastname_Firstname' 

내가 어떻게 내 원하는 출력을 얻을 수 있습니까?

답변

2

문자열을 변경할 수 없습니다. replace이 제자리에서 작동하지 않으면 새 문자열을 반환합니다. 새 문자열을 원래 이름으로 재 할당해야합니다.

if x in z: 
    z = z.replace(x,"Firstname") 

은 (또한, 하나 개 이상의 공간 들여 쓰기를 이용하시기 바랍니다.)

+0

다른 방법으로 사용할 수 있습니까 – Aniruddh

+0

다른 방법을 원하십니까? 이게 뭐가 잘못 됐어? –

+0

그러면 마지막 두 조건을 포함하는 방법 – Aniruddh

0

elif의 사용을 고려하십시오. 첫 번째 조건이 트리거되면 이름을 대체하고 마지막 조건 트리거가 마지막 이름을 대체합니까? 두 개의 ifelse 구조를 사용해보십시오.

z = 'abc' 
if z[0] == 'a': 
    z = z.replace('a', '1') 
elif z[1] == 'b': 
    z = z.replace('b', '2') 
if z[2] == 'c': 
    z = z.replace('c', '3') 

z는이 블록의 끝에서 무엇을 할 것이다 :

는 다음과 같은 고려? z =을 제거하면 해당 내용이 변경됩니까? 조건 (ifelifelse)을 변경하면 출력이 어떻게 바뀌나요?

+0

위의 코드를 사용하면 출력이 두 인스턴스가됩니다. – Aniruddh

+0

또한 문자로 문자를 비교하는 것은 비실용적입니다. 크기는 100+ – Aniruddh

관련 문제