2012-08-16 31 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。更好,更強大。

相關問題