在 python 中更改字符串中的字符

Changing a character in a string in python

在阅读这个问题之前,我想post免责声明。

我听说我们有可以直接替换字符串中字符的函数(string.replace),我只是想尝试一下手动方法。

这是我刚写的代码。

string = bytearray("abc'defgh",'utf-8')

for value in range(0,9):
    if string[value]=='h' or string[value]=='c':
        string[value]=='i'
    else:
        print('''Word's are not the same''')


print(string.decode("utf-8"))

我还希望给我答案的人也解释一下 bytearray(),因为我刚刚看到这个函数并且正在尝试。

谢谢!!

正如其他人提到的,有更好的方法可以做到这一点,但我认为探索 bytearray 如何工作的学习练习是有意义的。

您的 if 测试永远不会成功。这些测试假定 bytearray 是单个字符串的数组,但这是不正确的。 bytearray 实际上是 整数数组 ,因此您的测试需要将 string 中的元素与整数进行比较。您可以使用实际整数来做到这一点,但使用字节对象的 in 测试更方便。当你进行替换时,你需要提供一个整数,否则你会得到这个错误:

TypeError: an integer is required

这是您的代码的新版本。我已将 string 的名称更改为 arr,因为它不是字符串,所以称它为 string 会造成混淆。

我还更改了 for 循环以使用 enumerate 函数,该函数迭代一个可迭代对象,产生 (index, element) 对。

arr = bytearray("abc'defgh", 'utf-8')

replacement = ord('i')
for i, v in enumerate(arr):
    if v in b'ch':
        arr[i] = replacement
    print(v, chr(v))

print(arr)
print(arr.decode('utf-8'))    

输出

97 a
98 b
99 c
39 '
100 d
101 e
102 f
103 g
104 h
bytearray(b"abi\'defgi")
abi'defgi