替换列表中字符串的字符

时间:2016-09-14 13:01:02

标签: python python-3.x

我通过将它与l1和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 个答案:

答案 0 :(得分:2)

字符串是不可变的。 replace无法就地工作,它会返回一个新字符串。您需要将新字符串重新分配给原始名称。

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

(另外,请使用多个空格缩进。)

答案 1 :(得分:0)

考虑使用elif。如果您的第一个条件触发,替换第一个名称,最后一个条件是否会触发替换姓氏?您可能想尝试两个if else结构。

请考虑以下事项:

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 =更改吗?更改条件(if elif else)如何更改输出?