2012-10-12 263 views
0

我有一個很長的字符串,我試圖獲得返回一個字符串後發生 另一個字符串。例如,我首先在字符串中查找字符串'zombiesattack',然後查找名爲'title'的字符串的第一個地方,並希望打印將'text'保存在'title'和'/ title'之間的文本到名爲「titleOfVideo」的另一個變量。我在做這件事上遇到了一些困難。有什麼建議?存儲在變量命名的數據 如何在一個子字符串發生在另一個字符串之後?

data= <updated>2012-10-10T19:20:55.000Z</updated> 
<abc>zombiesattack</abc> 
<category scheme="http://schemas.google.com/g/2005#kind" term="http://gdata.youtube.com/schemas/2007#video" /> 
<category scheme="http://gdata.youtube.com/schemas/2007/categories.cat" term="Sports" label="Sports" /> 
<title>NY Yankees: 6 Essential Pieces of Postseason Memorabilia</title> 

串,我想挽救「紐約洋基:6個季後大事記的基本部分」將變量「titleOfVideo」。

starting_point = data.find('zombiesattack') 
new_string = data[starting_point:] 
title_point = new_string.find('<title>') 
print new_string[:title_point] 

titleOfVideo = new_string[title_point:20] 

當我嘗試這個並打印titleOfVideo,我得到了一堆返回線。

+2

使用Python(http://docs.python.org /library/xml.dom.html)而不是試圖做一堆手動字符串匹配。 – GWW

+0

我如何使用XML解析器實現這一點?我正在閱讀文檔,但遇到了麻煩。 – sharataka

回答

0

使用XML解析器來代替,如ElementTree的:建於[XML解析器]

from xml.etree import ElementTree 
# you need a valid xml string 
data = '<root>' + data + '</root>' 
etree = ElementTree.fromstring(data) 
if etree.findtext('abd') == 'zombiesattack': 
    titleOfVideo = etree.findtext('title') 
0

對於這個特定的例子:

starting_point = data.find('zombiesattack') 
new_string = data[starting_point:] 
title_start = new_string.find('<title>') 
title_end = new_string.find('</title>') 
titleOfVideo = new_string[title_start + len('<title>'):title_end] 
相關問題