2016-09-14 38 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