我在xml文件上應用了一些正則表達式來查找和替換值。通常它是有效的(我聽到聲音說「使用xml解析器」,同時我不能)。但是如果值中有一個特殊字符,它就會毀掉所有的東西。Python中正則表達式中的特殊字符問題
想我有一個XML文件,如下圖所示:
<fieldset>
<idle1>
<value>something\\n</value>
</idle1>
<idle2>
<value>blabla</value>
</idle2>
</fieldset>
如果我試圖取代「<idle2><value>
」節點值「<idle1><value>
」節點變成「東西\ N」的價值。當涉及到寫入文件,xml變爲:
<fieldset>
<idle1>
<value>something
</value>
</idle1>
<idle2>
<value>blabla</value>
</idle2>
</fieldset>
好在搜索和替換我使用「r」字符串文字。但它似乎不工作。我解決了這個問題。對於每個搜索和替換,我用「\\n
」替換「\ n」,然後將結果寫入文件。但它不是一種有效的使用方式。
有什麼我看不到的?我只想將「\\n
」寫入文件。這對我來說非常重要嗎?
編輯:這裏是我的regexs':
搜索:
self.searchPattern=(<fieldset>)(.*?)(<idle2>)(.*?)(<value>)(.*?)(</value>)(.*?)(</idle2>)(.*?)(</fieldset>)
用於替換:
self.replacePattern=`\g<1>\g<2>\g<3>\g<4><value>denemeasdasd\\\\n</value>\g<8>\g<9>\g<10>\g<11>`
這是搜索的Python代碼:
self.pattern = re.compile(r''''''+self.searchPattern+'''''', flags = re.S | re.U)
,這是替換ing
outtext = self.pattern.sub(r''''''+self.replacePattern+'''''',r''''''+self.match.group(0)+'''''')
這可以幫助我。謝謝。 – savruk 2011-03-01 12:06:35
@savruk謝謝。如果它確實是一個很好的答案,並且是最好的答案,那麼可以通過單擊三角形下按鈕下方的白色人字形按鈕來接受它。它會影響25分而不是10分。 – eyquem 2011-03-01 12:15:58
@savruk謝謝。我沒有被任何觀點所迷惑,但有一些允許在其他答案上被低估而不必擔心自己的愚蠢(是的,我做出了愚蠢的回答) – eyquem 2011-03-01 12:30:57