2012-09-19 115 views
1

我需要一些幫助,學習像程序員一樣思考。python:將字符串的部分分配給變量

我正在使用beautifulsoup4來抓取內容。我想在一個p標籤裏面有三個字符串。前兩個是子標籤的字符串。第三個是p選項卡的字符串。它看起來像這樣:

<p> 
<a href="some stuff">First String</a> 
<br/> 
<a href="some stuff">Second String</a> 
<br/> 
Third String 
<br/> 
unimportant fourth string 
<br/> 
</p> 

我想每個字符串分配給其自己的變量,但我無法弄清楚如何將它們分開。似乎我應該能夠分割成線,然後分配每一行。我的代碼目前看起來像這樣:

events=body.find_all('p') #find all the p tags 
for strings in events[3]: #get the first of the p tags i'm interested in 
    if strings.string: 
     all= str(strings.string).splitlines() #puts each string on its own line 
     for line in all: #shouldn't I be able to get each line by its index? 
      print line 

無論我嘗試什麼,我會得到所有三行。我花了幾個小時嘗試不同的事情,我希望有人在這裏能告訴我正確的思考方式。

感謝

+3

HTML不換行分隔,所以你不能依靠換行符解析它。你應該得到每個元素的文本節點。 – Keith

回答

0
variable = {} # a dictionary 
variable_names = ['line-1', 'line-2', 'line-3', 'line-4'] 

events=body.find_all('p') 
for strings in events[3]: 
    if strings.string: 
     all= str(strings.string).splitlines() 
     for i,line in enumerate(all): 
      variable[variable_names[i]] = line 

     # test 
     print variable['line-1'] 
相關問題