为了账号安全,请及时绑定邮箱和手机立即绑定

Django 截断单词并​​显示搜索到的单词

Django 截断单词并​​显示搜索到的单词

慕斯王 2021-11-30 10:25:19
我有一个变量sentences包含:“佩奇的网络爬虫于 1996 年 3 月开始探索网络,佩奇自己的斯坦福主页作为唯一的起点。为了将它为给定网页收集的反向链接数据转换为重要性的衡量标准,布林和佩奇开发了 PageRank算法。在分析 BackRub 的输出时,对于给定的 URL,该输出由按重要性排序的反向链接列表组成,两人意识到基于 PageRank 的搜索引擎会产生比现有技术更好的结果(当时现有的搜索引擎基本上根据搜索词在页面上出现的次数)。”然后,我在 Django HTML 中使用 truncatewords 来缩短句子的视图。{{ sentences|truncatewords:30 }}所以,结果显示:“Page 的网络爬虫于 1996 年 3 月开始探索网络,Page 自己的斯坦福主页作为唯一的起点。转换它......的反向链接数据。”实际上,我想truncatewords用一个特定的词来显示结果,例如“BackRub”,所以结果应该是:“在分析 BackRub 的输出时,对于给定的 URL,该输出包含按重要性排列的反向链接列表,两人意识到基于 PageRank 的搜索引擎会产生......”有什么解决办法吗?
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

我认为你应该编写自己的模板标签来解决这个问题。


您可以获得包含特定单词的句子的开头,并从那里开始返回字符串。然后你可以像上面那样截断结果。我相信这不是最好的解决方案。但我认为这是你可以开始的事情。请参阅下面的代码和结果:


模板标签中的某处

import re


from django import template


register = template.Library()



@register.filter

def findsentencebyword(sentence, word):

    matches = re.search("([^.]*?" + word + ".*)", sentence)


    if not matches:

        return sentence


    return matches.group()

然后在您的模板中加载并使用它,如下所示

{% load <templatetag> %}


{{ sentences|findsentencebyword:"BackRub"|truncatewords:30 }}

结果如下:

//img1.sycdn.imooc.com//61a58ba90001954f12250037.jpg

查看完整回答
反对 回复 2021-11-30
  • 1 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信