hhz1 发表于 2021-1-15 00:49:45

python中replace的问题

x = '8888'
x = x.replace('8', 'J')
print(x)
这样运行会出现错误
TypeError: 'str' object does not support item assignment

x = '8888'
print(x.replace('8', 'J'))
而这样不会出现错误

kogawananari 发表于 2021-1-15 00:59:57

str类型是不可变类型 中括号只能取不能改{:10_292:}

Jerry_Green 发表于 2021-1-15 01:57:12

理由同上,如果想实现,可以使用
x='8888'
x=list(x)
x='J'
x=''.join(x)
##join前面两个分号''中间是分隔符,不打代表没有

Twilight6 发表于 2021-1-15 12:49:00


第一个代码错误主要原因是这:

x = x.replace('8', 'J')

字符串是不可变类型的数据

而你这行代码是将 x 字符串索引值的第 1 个字符串重新赋值为 x.replace('8', 'J') 的值,即赋值为 'J'

所以 x = x.replace('8', 'J') 这行错误的代码可以简化为:

x = 'J'

报错的原因是因为你试图改变一个不可变的数据的值(即 x 字符串数据为 '8888' 你想将 x 在原基础上将其变为 'J888')

即你想将 x 字符串中的第一个字符重新赋值为 J 导致报错
页: [1]
查看完整版本: python中replace的问题