2013-07-25 63 views
0

我有一本詞典。關鍵是動物。該值是不同動物的列表。 列表的大小和動物的種類會隨着每個應用程序的使用而改變。 對於列表中的每個動物,我想通過我的BeautifulSoup樹進行搜索,找到所有出現的動物並將其包裹在span標記中/用我的span標記的動物替換它BeautifulSoup。從我的列表中查找並替換單詞的所有實例

我無法將變量傳遞給re .compile()來幫助搜索這些動物。

我也想知道如果在附近沒有標籤,可以在BeautifulSoup中的字符串中替換單個單詞。

Windows 7中,Python 2.7版,BeautifulSoup 4 代碼成才這樣

for key, value in animals.iteritems():  #go through dict 
    if key == 'ANIMALS':      
     for name in value:     #for name of animals in list 
      animal_tag = soup.new_tag("span", id=key) #create new tag with id=ANIMALS 
      animal_tag.string = name     #create new string with name of animal 
      name = soup.find(text=re.compile(r'^%s$' % name)) 
      #find animals in doc - keeps throwing a none type error 
      #replace animal in doc with new <span id="ANIMALS">animal>/span> 

我感謝所有幫助,任何人都可以給。

回答

0

在這種情況下,我認爲使用string.replace()來操縱原始HTML會更簡單。如果text等於原始HTML:

for key, value in animals.iteritems(): 
    if key == 'ANIMALS':      
     for name in value: 
      text.replace(name,"<span id="+key+">"+name+"</span>") 
+0

tehsockz,感謝您的快速回復。雖然這似乎不適合我,但它打開了以不同方式解決問題的想法,這總是有幫助的。我很欣賞答案。試圖upvote,但缺乏所需的聲譽。 – Craicerjack

+0

不適合你嗎?怎麼會這樣? – tehsockz

+0

劃痕。這是工作。只是我的計劃的邏輯需要工作。 – Craicerjack

相關問題