python replace()未按预期工作
我的脚本应该编写html文件,更改html菜单以将当前页面显示为class=“current\u page\u item”,以便在呈现时将其高亮显示。它必须进行两次替换,首先将上一个当前页设置为非当前页,然后将新的当前页设置为当前页。两行writeText.replace似乎没有任何效果。它没有给我一个错误或任何东西。如有任何建议,将不胜感激python replace()未按预期工作,python,Python,我的脚本应该编写html文件,更改html菜单以将当前页面显示为class=“current\u page\u item”,以便在呈现时将其高亮显示。它必须进行两次替换,首先将上一个当前页设置为非当前页,然后将新的当前页设置为当前页。两行writeText.replace似乎没有任何效果。它没有给我一个错误或任何东西。如有任何建议,将不胜感激 for each in startList: sectionName = s[each:s.find("\n",each)].split()[1]
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()
对于列表中的每个:
sectionName=s[each:s.find(“\n”,each)].split()[1]
如果sectionName[-3:]“-->”:
end=s.find(“end”+sectionName+“-->”)
sectionText=s[每个+长度(sectionName)+12:end-1]
writeText=templatetop+“\n”+sectionText+“\n”+templatebottom
writeText.replace(“”,“ ”)
writeText.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')
writeText=writeText.replace(“”,“ ”)
writeText=writeText.replace(“ 所以首先用”“ ” 替换”
,然后用“”替换””
。我不得不说,这有点滑稽
除了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
>>writeText=“”
…
“…”
>>>result=writeText.replace(',' ')>>result=result.replace(' 您不应该期望它起作用,因为您应该阅读:
返回字符串的副本,所有出现的子字符串old都替换为new
为了让这个响应更加清晰,replace返回一个字符串,因为字符串本身是不可变的updates@John作为未来的提示,您可能会发现在Python(或ipython:)中尝试不熟悉的函数是有益的交互式shell。这将防止您做出可以通过简单实验证明为错误的假设。这一点,并保持文档的完整性。祝您好运。字符串在python中是不可变的。顺便说一句,!=
比
可读性强得多。嗯,这根本不是他所做的。请仔细看第二次回放eWell,是和否。实际上只有第一次迭代的替换相互抵消。但这使得第一次替换毫无意义。
>>> 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