在 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
在阅读这个问题之前,我想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