为了账号安全,请及时绑定邮箱和手机立即绑定

python replace()无法按预期工作

python replace()无法按预期工作

扬帆大鱼 2021-03-17 09:12:16
我的脚本应该编写html文件,更改html菜单以将当前页面显示为class =“ current_page_item”,以便在呈现时将其突出显示。它必须进行两次替换,首先将上一个当前页面设置为当前页面,然后将新的当前页面设置为当前页面。两条writeText.replace行似乎没有任何作用。它不会给我任何错误或其他任何信息。任何建议,将不胜感激。for each in startList:    sectionName = s[each:s.find("\n",each)].split()[1]    if sectionName[-3:] <> "-->":        end = s.find("end "+sectionName+'-->')        sectionText =  s[each+len(sectionName)+12:end-1]        writeText = templatetop+"\n"+sectionText+"\n"+templatebottom        writeText.replace('<li class="current_page_item">','<li>')        writeText.replace('<li><a href="'+sectionName+'.html','<li class="current_page_item"><a href="'+sectionName+'.html')        f = open(sectionName+".html", 'w+')        f.write(writeText)        f.close()  这是我要定位的字符串的一部分(模板顶部):<li class="current_page_item"><a href="index.html" accesskey="1" title="">Home</a></li><li><a href="history.html" accesskey="2" title="">History</a></li><li><a href="members.html" accesskey="3" title="">Members</a></li>
查看完整描述

3 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

replace 返回结果字符串,因此您需要执行以下操作:


writeText = writeText.replace('<li class="current_page_item">','<li>')

writeText = writeText.replace('<li><a href="'+sectionName+'.html','<li class="current_page_item"><a href="'+sectionName+'.html')


查看完整回答
反对 回复 2021-03-24
?
翻阅古今

TA贡献1780条经验 获得超5个赞

您不应该期望它起作用,因为您应该阅读文档:

返回该字符串的副本,其中所有出现的子字符串old都被new替换。


查看完整回答
反对 回复 2021-03-24
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

所以,首先你替换'<li class="current_page_item">'用'<li>',然后你替换'<li>'用'<li class="current_page_item">'。我不得不说,这有点可笑。


除了misha指出的问题之外,那个替换还返回结果,您的两个替换实际上互相抵消了。


>>> writeText = """<li class="current_page_item"><a href="index.html" accesskey="1" title="">Home</a></li>

... <li><a href="history.html" accesskey="2" title="">History</a></li>

... <li><a href="members.html" accesskey="3" title="">Members</a></li>"""

>>> result = writeText.replace('<li class="current_page_item">','<li>')>>> result = result.replace('<li><a href="index.html','<li class="current_page_item"><a href="index.html')

>>> result == writeText

True

现在,这只是替换的第一次迭代,但这充分说明您使用的是错误的解决方案。这也意味着您只需删除第一个替换项就可以了。


另外,当您仅定位templatetop时,为什么还要在writeText上进行替换?


查看完整回答
反对 回复 2021-03-24
  • 3 回答
  • 0 关注
  • 244 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号