在Python中每N个词拆分HTML
有没有办法在一个很长的HTML字符串中,按照N个单词来进行切分呢?显然,我可以使用:
' '.join(foo.split(' ')[:n])
来获取一段普通文本的前n个单词,但这样可能会在HTML标签的中间切分,这样就会产生无效的HTML,因为没有关闭那些已经打开的标签。
我需要在一个zope / plone的网站上做到这一点——如果这些产品中有什么标准的方法可以实现,那就最好不过了。
举个例子,假设我有这样的文本:
<p>This is some text with a
<a href="http://www.example.com/" title="Example link">
bit of linked text in it
</a>.
</p>
如果我要求它在5个单词后切分,它应该返回:
<p>This is some text with</p>
7个单词:
<p>This is some text with a
<a href="http://www.example.com/" title="Example link">
bit
</a>
</p>
4 个回答
0
我想提一下Python里自带的基础HTMLParser,因为我不太确定你想要达到的最终结果是什么,这个工具可能会帮到你,也可能帮不到你,你主要会使用处理器来完成工作。
3
我听说 Beautiful Soup 在解析HTML方面非常厉害。它可能会帮助你得到正确的HTML输出。
6
看看这个 truncate_html_words 函数,它在django.utils.text里。即使你不使用Django,这里的代码也正好能满足你的需求。