2012-08-16 32 views
0

在Python中,我试图用两个字符串之间的正则表达式来提取信息。我认为举个例子会更好。寻找拉出两个字符串之间的数据

<stuff> 
1 
2 
3 
4 
</stuff> 

<stuff> 
5 
7 
8 
9 
</stuff> 

我想拉这些容器*之一,并将它们放在一个单独的文件中。我已经找到了如何在例如5 6 7 8之间提取内容,并且同时(在bash中)提取所有记录,但是没有将包含正则表达式的完整容器放置在变量或文件中,我可以合作的东西。

所以我想之间并包括<东西>和< /资料>

任何建议将不胜感激收集。我正在尝试在python2中为此工作。

+5

如果您需要以XML格式解析数据,您可以尝试使用'xml.etree.ElementTree'模块中的工具 - http://docs.python.org/library/xml.etree.elementtree.html – 2012-08-16 11:47:52

+0

“容器”之后的星号表示?另外,你的输入是'5 7 8 9',但你的输出是'5 6 7 8',这是故意的吗? – Kevin 2012-08-16 12:04:38

+0

请发布您的代码。 – georg 2012-08-16 12:11:26

回答

1

如果您需要解析XML格式的数据,您可以尝试使用xml.etree.ElementTree模块中的工具。

from xml.etree.ElementTree import XML 
single_item_data = XML("<stuff>1 2 3</stuff>").text 

如果你有一些嵌套元素,你可以做这样的事情如下:

from xml.etree.ElementTree import XML 

test_input_xml = ''' 
<lotsOfStuff> 
    <stuff> 
    1 
    2 
    3 
    4 
    </stuff> 

    <stuff> 
    5 
    7 
    8 
    9 
    </stuff> 
</lotsOfStuff> 
''' 

test_input = XML(test_input_xml) 
stuffs = test_input.findall("stuff") 

for stuff in stuffs: 
    element_text = stuff.text 
    print element_text 
+0

非常感谢您的帮助,但是我非常需要这些帮助。具体而言,这是用于获取与许多虚拟主机的大型httpd.conf文件...所以... 服务器名test123 的DocumentRoot/test123 服务器名123543 的DocumentRoot/123534 和创建单独的文件,在它的单个容器,因此新文件或变量中的一个将包含“ 服务器名称123543 的DocumentRoot/123534 ” ... 希望清除它,请让我知道如果这是可能的。 – user1601716 2012-08-16 13:23:56

1

如果你想表达的抓取数据拖出HTML页面的一个简化的图片,那么我会强烈建议不要使用正则表达式[在SO中查找,为什么]。使用BeautifulSouplxml。更好,更强大。

相关问题