字符串替换似乎不起作用

时间:2014-11-15 06:33:10

标签: python string replace

我最初尝试使用=运算符来赋值但是它返回了一个错误, 然后我尝试使用 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)

但它正在返回原始价值。

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

encrypted_str来自用户encrypted_str = raw_input() dec_str2是用户输入的freq字符串。 这个问题几乎与变量无关 我想知道我是否错误地使用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的新手,所以我试图寻找替代品。

3 个答案:

答案 0 :(得分:26)

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

由于类似的原因,str类提供的方法都不能改变字符串。因此,str.replace方法无法按照我的预期方式运行。它不是修改字符串,而是返回一个带有请求替换的新字符串。

尝试:

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

如果您要进行许多此类替换,将字符串转换为字符列表,逐个进行修改,然后使用str.join将列表重新转换为你完成后再次串起来。

答案 1 :(得分:5)

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

例如:

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

现在encrypted_str包含新值。

答案 2 :(得分:0)

我认为您必须先删除行。

line = line.rstrip()
print(line.replace('', ''))