Skip to main content
 首页 » 编程设计

python之Django truncatewords 并显示搜索到的词

2024年09月03日31xiaohuochai

我有一个变量 sentences 包含:

“佩奇的网络爬虫于 1996 年 3 月开始探索网络,佩奇自己的斯坦福主页是唯一的起点。为了将它为给定网页收集的反向链接数据转换为重要性衡量标准,布林和佩奇开发了 PageRank 算法。在分析 BackRub 的输出时,对于给定的 URL,该输出由按重要性排序的反向链接列表组成,两人意识到基于 PageRank 的搜索引擎会产生比现有技术更好的结果(当时现有的搜索引擎基本上根据搜索字词在页面上出现的次数对结果进行排名)。”

然后,我在 Django HTML 中使用 truncatewords 来缩短句子的 View 。

{{ sentences|truncatewords:30 }} 

所以,结果是这样的:

“佩奇的网络爬虫于 1996 年 3 月开始探索网络,佩奇自己的斯坦福主页是唯一的起点。要转换反向链接数据……”

实际上,我想用特定的单词显示 truncatewords 结果,例如“BackRub”,所以结果应该是:

“在分析 BackRub 的输出时,对于给定的 URL,该输出由按重要性排序的反向链接列表组成,两人意识到基于 PageRank 的搜索引擎会产生……”

有什么解决办法吗?

谢谢

请您参考如下方法:

我认为你应该write your own template tag来解决这个问题。

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

模板标签中的某处

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 }} 

结果如下: