鱼C论坛

 找回密码
 立即注册
查看: 1368|回复: 7

[已解决]关于字符串替换的疑惑

[复制链接]
发表于 2017-10-10 10:59:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在字符串中替换某个字符时,使用切片无法替换

>>> name = 'Henny'
>>> naume[0] = 'P'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment




使用replace方法可以替换
>>> name = 'Henny'
>>> name.replace('H', 'P')
'Penny'
>>> name
'Henny'


replace替换后并不改变name的值,如何理解?
最佳答案
2017-10-10 11:16:30
第一个问题:
字符串创建后是不可改变的,就像元祖一样。可改变的是'列表' 等等

第二个问题:
看官方的帮助文档
str.replace(old, new[, count])
Return a copy of the string with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced.

写的很清楚,是先对原始字符串进行复制,在对复制后的进行替换
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-10 11:07:27 | 显示全部楼层
replace函数其实是生成了另一个新的字符串,字符串和元组一样都是不能原值修改的,但是可以重新赋值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-10 11:16:09 | 显示全部楼层
jerryxjr1220 发表于 2017-10-10 11:07
replace函数其实是生成了另一个新的字符串,字符串和元组一样都是不能原值修改的,但是可以重新赋值。

你指的重新赋值是name = name.replace('H', 'P') 这样吗?

重新赋值和修改有什么不同?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 11:16:30 | 显示全部楼层    本楼为最佳答案   
第一个问题:
字符串创建后是不可改变的,就像元祖一样。可改变的是'列表' 等等

第二个问题:
看官方的帮助文档
str.replace(old, new[, count])
Return a copy of the string with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced.

写的很清楚,是先对原始字符串进行复制,在对复制后的进行替换
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 11:18:45 | 显示全部楼层
songkunhuang 发表于 2017-10-10 11:16
你指的重新赋值是name = name.replace('H', 'P') 这样吗?

重新赋值和修改有什么不同?

比如 name = 'abcd'
你可以 name = name[:2]+'e'+name[3:] #这就是重新赋值
但是不可以 name[2] = 'e' #这就是原值修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-10 11:19:36 | 显示全部楼层
shuofxz 发表于 2017-10-10 11:16
第一个问题:
字符串创建后是不可改变的,就像元祖一样。可改变的是'列表' 等等

谢谢,理解了,是替换后创建了一个新的字符串。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-10 11:20:17 | 显示全部楼层
shuofxz 发表于 2017-10-10 11:16
第一个问题:
字符串创建后是不可改变的,就像元祖一样。可改变的是'列表' 等等

顺便问一句,怎么快速检索官方文档?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 11:50:58 | 显示全部楼层
songkunhuang 发表于 2017-10-10 11:20
顺便问一句,怎么快速检索官方文档?

打开idle  按F1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 14:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表