String replace doesn't appear to be working
Strings in Python are immutable. That means that a given string object will never have its value changed after it has been created. This is why an element assignment like some_str[4] = "x"
will raise an exception.
For a similar reason, none of the methods provided by the str
class can mutate the string. So, the str.replace
method does not work the way I think you expect it to. Rather than modifying the string in place, it returns a new string with the requested replacements.
Try:
encrypted_str = encrypted_str.replace(encrypted_str[j], dec_str2[k], 2)
If you're going to be making many such replacements, it may make sense to turn your string into a list of characters, make the modifications one by one, then use str.join
to turn the list back into a string again when you're done.
Python strings are immutable. This means that a string cannot be modified by a method call as described in your post. You must use an assignment in order to use the returned string from your method call.
For example:
encrypted_str = encrypted_str.replace(encrypted_str[j], dec_str2[k], 2)
Now encrypted_str
contains the new value.