2016-09-14 39 views
0

我將l3和l2比較來替換l3中的字符和/或字符串。下面顯示了我得到的輸出和我喜歡的輸出。替換列表中的字符串的字符

我的代碼

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

那麼我怎麼包括最後2條件 – 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 =改變?如何更改條件(ifelifelse)更改輸出?

+0

我得到兩個輸出實例,如果我使用上面的代碼 – Aniruddh

+0

而且它也不切實際比較字符如果列表大小是100+ – Aniruddh