BeautifulSoup。使用列表中的一个查找并替换单词的所有实例

时间:2013-07-25 16:50:40

标签: python list variables beautifulsoup

我有一本字典。关键是动物。该值是不同动物的列表。 列表的大小和动物的内容将随着每个应用程序的使用而变化。 对于列表中的每个动物,我想搜索我的BeautifulSoup树,查找所有出现的动物并将其包裹在span标记中/用我的span标记动物替换它

我无法将变量传递给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>  

我感谢任何人都能给予的任何帮助。

1 个答案:

答案 0 :(得分: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>")