20190118-自定义实现replace方法
2019-01-21 02:43:43来源:博客园 阅读 ()
1.自定义实现replace方法
Python replace() 方法把字符串中的 old(旧字符串) 替换成 neange(新字符串),如果指定第三个参数max,则替换不超过 max 次。
考虑old与nein的长度不一样的情况,如old = 'is';new = 'was'
思路:
1.先找出字符串中old字符的index,考虑可能出现多次的情况使用一个列表replace_str_index_in_s存储old_str的index
2.使用result列表存储替换后的新的字符串,考虑result的生成方式为:
2.1 从原有字符串的第0位开始,如果index不在replace_str_index_in_s中,则result+=s[i],然后查看i+1,i+2...
2.2 如果index在replace_str_index_in_s中,则result+=new_str,此时需要注意的一点是新的i的位置位i+len(old_str)而非i+1
2.3 考虑不知下一个i的值为i+1还是i+len(old_str),因此用while语句来实现
3. 考虑给定max的情况使用count来计数,当count<max的时候替换,当count>max的时候不替换
def customize_replace(s,old_str,new_str,max=None):
result =''
#存储新的字符串
replace_str_index_in_s =[]
#存储old_str的index
for i in range(len(s)):
if s[i:i+len(old_str)]==old_str:
replace_str_index_in_s.append(i)
j=0
if max==None:
while j <len(s):
#遍历s[j],j的值不是按序+1,因此用while循环
if j in replace_str_index_in_s:
result+=new_str
j+=len(old_str)
else:
result+=s[j]
j+=1
else:
count =0
#统计替换次数
while j <len(s):
if count <max and j in replace_str_index_in_s:
print('if执行',j,result)
result+=new_str
j+=len(old_str)
count+=1
else:
print('else执行',j,result)
result+=s[j]
j+=1
return result
Tips:有一种特殊情况如s2='addbbdddbbbddbb##bb#'有3个b的情况下替换的old_str为bb的时候,因此replace_str_index_in_s里面的index可能结果为[3,8,9,13,17],但是明显第9位不会进行替换,因为此处需要用count来计数而不能写做replace_str_index_in_s[:max],这种写法的情况下会有替换次数不足max的情况,错误情况如max =3,那么replace_str_index_in_s[:3] = [3,8,9],但是第9位不会替换,因此实际替换次数为2,因此不能用这种写法
原文链接:https://www.cnblogs.com/hyj691001/p/10289520.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:PyQt 5 的学习引言
- python day2-爬虫实现github登录 2019-08-13
- python+selenium实现自动化百度搜索关键词 2019-07-24
- xadmin进行全局配置(修改模块名为中文以及其他自定义的操作 2019-07-24
- python + pyinstaller 实现将python程序打包成exe文件直接运 2019-07-24
- Python socket编程 (2)--实现文件验证登入 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash