我在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