python 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]

我的脚本应该编写html文件,更改html菜单以将当前页面显示为class=“current\u page\u 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()  
对于列表中的每个:
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