Это примерно то, что вы могли бы сделать, используя Beautifulsoup :
from BeautifulSoup import BeautifulSoup
html_body ="""
Here is an example link:<a href='http://example.com'>example.com</a>
"""
soup = BeautifulSoup(html_body)
for link_tag in soup.findAll('a'):
link_tag.string = "%s%s%s" % ('|',link_tag.string,'|')
for text in soup.findAll(text=True):
text_formatted = ['<a href=""http://example.com"">example</a>'\
if word == 'example' and not (word.startswith('|') and word.endswith('|'))\
else word for word in foo.split() ]
text.replaceWith(' '.join(text_formatted))
for link_tag in soup.findAll('a'):
link_tag.string = link_tag.string[1:-1]
print soup
В основном я убираю весь текст из post_body
, заменяя слово в качестве примера на заданноессылка, не касаясь текста ссылок, которые сохраняются с помощью '|'символы при разборе.
Это не на 100% идеально, например, оно не работает, если слово, которое вы пытаетесь заменить, заканчивается точкой;с некоторым терпением вы можете исправить все крайние случаи.