Python子字符串不适用于数字整数

时间:2016-06-13 22:44:09

标签: python

所以我在代码中遇到错误时遇到了问题:“第30行,in     (ciphertextBinary [i])[x] =“0” TypeError:'str'对象不支持项目分配“。  我不知道为什么会发生这种情况,因为我正在做的就是更改字符串的子文本并用字符串替换它。如果你能提出任何解决方案,那将是非常有必要的,因为我已经找了一段时间的答案,但没有成功。在我遇到这个错误之前:

Android Sdk

代码无法正常工作并返回输入,因此我将其更改为我认为会使其正常工作但却遇到此错误。

     if (textBinary[i])[x] == (pad[i])[x]:
        (ciphertextBinary[i])[x] = "0"
    elif (textBinary[i])[x] != pad[i][x]:
        (ciphertextBinary[i])[x] = "1"

2 个答案:

答案 0 :(得分:3)

Python不允许您更改字符串中的单个字符。字符串在Python中被视为immutable type,就像数字或元组一样。因此,您尝试在字符串中执行字符串赋值有点像要求将数字8435中的第三个数字更改为0。相反,你可以做这样的事情:

(ciphertextBinary[i]) = (ciphertextBinary[i])[:x] + "0" + (ciphertextBinary[i])[x+1:]

这可以通过将您感兴趣的变量设置为等于字符x的所有内容,加上新字符以及x之后的所有字符来实现。

我希望这会有所帮助。

答案 1 :(得分:0)

字符串在python中是不可变的。如果 ciphertextBinary 很短,那么jonathanking的答案是有效的。

如果太长,您可能想先创建列表(这是可变的):

settings.txt