stringreplace似乎没有工作

我最初尝试使用=运算符来分配值,但它返回一个错误,然后我尝试使用string.replace()

 encrypted_str.replace(encrypted_str[j], dec_str2[k], 2) 

 encrypted_str.replace(encrypted_str[j], unichr(ord(dec_str2[k]) - 32), 2) 

但它正在返回原来的价值。

帮助了解如何正确使用replaceAPI来提供正确的结果还有其他任何可以用来代替unichr() API。

encrypted_str是由用户从encrypted_str = raw_input() dec_str2是用户input的freqstring。 这个问题几乎不涉及我想知道如果我正在使用replcae() API错误的variables,因为它给了我不变的输出为encrypted_str我们可以使用encrypted_str[j] 将返回一个字符从string定义子stringreplace() API。 我用encrypted_str.replace(encrypted_str[j], unichr(ord(dec_str2[k]) - 32), 1) max取代1而不是2 (因为我只需要一个replace)。

我需要做的实际操作将在C中,如下所示: encrypted_str[j] = dec_str2[k] -32

由于我是新来的python我试图find一个替代品。

Python中的string是不可变的。 这意味着给定的string对象在创build后永远不会改变其值。 这就是为什么像some_str[4] = "x"这样的元素赋值会引发exception。

出于类似的原因, str类所提供的方法都不能改变string。 所以, str.replace方法不能按照我所期望的方式工作。 它并没有就地修改string,而是返回一个新的string和所要求的replace。

尝试:

 encrypted_str = encrypted_str.replace(encrypted_str[j], dec_str2[k], 2) 

如果你打算做很多这样的replace,那么将string转换成字符列表,逐个进行修改,然后使用str.join将列表再次变成一个string,重做。

Pythonstring是不可变的。 这意味着一个string不能被你的文章中描述的方法调用修改。 您必须使用赋值才能使用方法调用中返回的string。

例如:

 encrypted_str = encrypted_str.replace(encrypted_str[j], dec_str2[k], 2) 

现在encrypted_str包含新的值。