2013-03-22 44 views
0

我正在编写一个Python脚本,我需要在其中执行一些搜索并替换一些类似XML的字符串。Python:如何使用正则表达式来执行搜索+替换

比方说,我有一个字符串foo,它包含一些形式为<bar>something</bar>的XML。我想要更改<bar>...</bar>内的something,我们来说说<bar>something_else</bar>

我该怎么做呢?

对不起,如果这是一个新手问题,但我对Python很新。我通读了Python正则表达式文档,但这只会让我更加困惑。 (实际上我发现正则表达式在其他语境/语言中也很混乱,所以这可能不一定是Python的错误:))

+4

XML或类似XML?因为正则表达式和HTML/XML就像油和水 - 他们不喜欢混合。如果它是HTML或XML,那么使用'lxml.etree'来更改上下文会更好。 – isedev 2013-03-22 21:11:47

+0

我同意isedev http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html – That1Guy 2013-03-22 21:12:54

+1

这可能是一个很好的起点:http://docs.python.org /release/2.5.2/lib/module-xml.dom.html一旦你完成了XML解析,你可以对获取的字符串(在标签内)进行regex,如果需要的话可以更深入。 – 2013-03-22 21:14:59

回答

1

下面是一个简单的例子,说明如何使用lxml.etree来让它开始沿着右边路径(基于以上评论):

text = """<tag><innertag>text</innertag>more text</tag>""" 
import lxml.etree 
xml = lxml.etree.fromstring(text) 
node = xml.find('innertag') 
node.text = "new text" 
lxml.etree.tostring(xml) 
'<tag><innertag>new text</innertag>more text</tag>' 

查看lxml文档。

相关问题