如何从用户帖子/字符串中提取主题标签?

时间:2017-07-31 12:39:53

标签: python django

我想解析来自具有#hashtag的用户输入的字符串,并将结果与​​其他字一起打印出来

就像facebook和twitter处理它的方式一样:)

例如: 用户发布

  

“你好#word,我今天正在学习#python和#django!”

我希望输出为:  你好#word,我今天正在学习#python#django

这是我走了多远:

@login_required
@ajax_required
def post(request):
    last_feed = request.POST.get('last_feed')

    user = request.user
    csrf_token = (csrf(request)['csrf_token'])
    feed = Feed()
    feed.user = user
    post = request.POST['post']

    lookup_hash_tag =  post.strip()
    hstg=re.compile(r"#(\w+)")
    #print pat.findall(s)

    for hashtag in hstg.findall(lookup_hash_tag):

        post = "<span><a href='/hastag/?q={}'>{}</a> </span> {}".format(hashtag, hashtag,  post.replace('#', '#'))




    if len(post) > 0:
        feed.post = post[:255]
        feed.save()
    html = _html_feeds(last_feed, user, csrf_token)
    return HttpResponse(html)

1 个答案:

答案 0 :(得分:2)

我对你的问题一无所知,但我看到一些错误:

  • 可以使用:re.sub(r'#([\w]+)', r"<span><a href='/hastag/?q=\g<1>'>#\g<1></a> </span>", a)
  • ,而不是匹配的for循环
  • 每次都会在for循环中覆盖post变量。
  • 什么是饲料?
  • 很多额外的复杂性(post.replace('#', '#')什么都不做,围绕变量的括号什么都不做,等等)
  • 如果Feed是模型,为什么不将post字段设置得更大?如果您在255处切割,则可能会丢失数据(或者在链接的中间切割)

请提供更多信息,否则我们只是在猜测。