字符串替换似乎不起作用

vat*_*hur 8 python string replace

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

encrypted_str.replace(encrypted_str[j], dec_str2[k], 2)
Run Code Online (Sandbox Code Playgroud)

encrypted_str.replace(encrypted_str[j], unichr(ord(dec_str2[k]) - 32), 2)
Run Code Online (Sandbox Code Playgroud)

但它正在返回原始价值.

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

encrypted_str正在从用户采取的encrypted_str = raw_input() dec_str2是频率字符为通过用户输入.这个问题几乎不涉及我想知道的变量,如果我replcae()错误地使用API,因为它给了我未更改的输出.encrypted_str 我们可以使用encrypted_str[j] 它将返回字符串的字符来定义replace()API 的子字符串.我使用encrypted_str.replace(encrypted_str[j], unichr(ord(dec_str2[k]) - 32), 1) max replace 1而不是2(因为我只需要一个替换).

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

因为我是python的新手,所以我试图寻找替代品.

Blc*_*ght 31

Python中的字符串是不可变的.这意味着给定的字符串对象在创建后永远不会更改其值.这就是为什么元素赋值some_str[4] = "x"会引发异常的原因.

由于类似的原因,str类提供的方法都不能改变字符串.因此,该str.replace方法不会像我认为的那样工作.它不是修改字符串,而是返回一个带有请求替换的新字符串.

尝试:

encrypted_str = encrypted_str.replace(encrypted_str[j], dec_str2[k], 2)
Run Code Online (Sandbox Code Playgroud)

如果您要进行许多此类替换,将字符串转换为字符列表,逐个进行修改,然后str.join在完成后再使用将列表重新转换为字符串可能是有意义的.


gro*_*sNL 6

Python字符串是不可变的.这意味着您的帖子中描述的方法调用无法修改字符串.您必须使用赋值才能使用方法调用中返回的字符串.

例如:

encrypted_str = encrypted_str.replace(encrypted_str[j], dec_str2[k], 2)
Run Code Online (Sandbox Code Playgroud)

现在encrypted_str包含新值.