为什么Python在for循环中使用replace返回字符串赋值错误?

时间:2017-02-22 02:14:30

标签: python

在下面的示例中,我预计会出现错误,指出字符串赋值是不可能的,因为字符串是不可变的。相反,循环返回原始字符串。

a = "AECD"

for i in a:
    if i == "E":
        a.replace(i, "B")
        print(a)

替换不是基本上尝试做与[1] =“B”相同的事情吗?这与使用赋值创建新对象与使用replace修改现有对象有关吗?

3 个答案:

答案 0 :(得分:0)

试试这个:

a = "AECD"

for i in a:
    if i == "E":
        b = a.replace(i, "B")
        print (b)
        print(a)

答案 1 :(得分:0)

a.replace(i, "B")

不会更改原始字符串a。相反,它会返回在i中替换a而产生的字符串。 在你的循环中,你只是在评估表达式并将其放在地板上。

你可以这样做:

a = "AECD"

for i in a:
    if i == "E":
        a = a.replace(i, "B")
        print(a)

在此版本中,您将带有替换字符串,并将该值分配给变量a,这样可以获得您期望的效果。

答案 2 :(得分:0)

由于您没有进行字符串赋值,因此这不是错误。正在创建一个新字符串,并由str.replace()方法返回。但是,你没有把它分配给任何东西而把它扔掉。