2013-07-25 4 views
0

나는 사전이 있습니다. 열쇠는 동물입니다. 값은 다른 동물의 목록입니다. 목록의 크기와 동물의 용도는 응용 프로그램 사용마다 바뀝니다. 목록에있는 각 동물에 대해 내 BeautifulSoup 트리를 검색하고 그 동물의 모든 항목을 찾아서 span 태그로 감싸고/span 태그가 지정된 동물로 바꿉니다.BeautifulSoup. 찾기 및 단어 목록에서 하나의 모든 인스턴스를 대체

변수를 변수로 전달하는 데 문제가 있습니다. .compile()을 사용하면이 동물을 검색하는 데 도움이됩니다.

근처에 태그가없는 경우 BeautifulSoup의 문자열에서 한 단어를 바꿀 수 있는지 궁금합니다.

윈도우 7, 파이썬 2.7, BeautifulSoup로 4 코드가 someting 나는 사람이 줄 수있는 모든 도움을 주셔서 감사합니다이

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

잘 작동하지 않으세요? Howso? – tehsockz

+0

긁힘. 그것은 효과가있다. 내 프로그램의 논리는 작동이 필요합니다. – Craicerjack

관련 문제