0

私のスクリプトは、現在のページを class="current_page_item" として表示するように html メニューを変更して、レンダリング時に強調表示されるようにする html ファイルを作成することになっています。2 つの置換を行う必要があります。まず、前の現在のページを現在のページではなく設定し、次に新しい現在のページを現在のページに設定します。2 つの 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()  

これが私がターゲットにしている文字列の一部です(templatetop):

<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>
4

3 に答える 3

6

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')
于 2013-05-16T05:37:32.730 に答える
3

ドキュメントを読む必要があるため、それが機能するとは思わないでください。

部分文字列 old をすべて new に置き換えた文字列のコピーを返します。

于 2013-05-16T05:44:24.547 に答える
1

したがって、最初に に置き換え'<li class="current_page_item">''<li>'から、 に置き換え'<li>'ます'<li class="current_page_item">'。それは少しおかしいです、私は言わなければなりません。

misha が指摘した問題に加えて、replace は結果を返しますが、実際には 2 つの置換は互いに相殺されます。

>>> 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 で置換を行っているのですか?

于 2013-05-16T05:42:07.447 に答える