周不敢 2021-06-22 10:20 采纳率: 100%
浏览 129
已采纳

新浪微博热门话题(Python)

新浪微博可以在发言中嵌入“话题”,即将发言中的话题文字写在一对“#”之间,就可以生成话题链接,点击链接可以看到有多少人在跟自己讨论相同或者相似的话题。新浪微博还会随时更新热门话题列表,并将最热门的话题放在醒目的位置推荐大家关注。

 

本题目要求实现一个简化的热门话题推荐功能,从大量英文(因为中文分词处理比较麻烦)微博中解析出话题,找出被最多条微博提到的话题。

 

输入格式:

输入说明:输入首先给出一个正整数N(≤10​5​​),随后N行,每行给出一条英文微博,其长度不超过140个字符。任何包含在一对最近的#中的内容均被认为是一个话题,输入保证#成对出现。

输出格式:

第一行输出被最多条微博提到的话题,第二行输出其被提到的微博条数。如果这样的话题不唯一,则输出按字母序最小的话题,并在第三行输出And k more ...,其中k是另外几条热门话题的条数。输入保证至少存在一条话题。

注意:两条话题被认为是相同的,如果在去掉所有非英文字母和数字的符号、并忽略大小写区别后,它们是相同的字符串;同时它们有完全相同的分词。输出时除首字母大写外,只保留小写英文字母和数字,并用一个空格分隔原文中的单词。

输入样例:

4

This is a #test of topic#.

Another #Test of topic.#

This is a #Hot# #Hot# topic

Another #hot!# #Hot# topic

输出样例:

Hot

2

And 1 more

  • 写回答

1条回答 默认 最新

  • CSDN专家-文盲老顾 2021-06-22 11:16
    关注
    import re
    
    a = int(input('输入微博数量(小于等于105的正整数):'))
    b = []
    c = []
    while len(b)<a:
        x = input('请输入微博内容,小于140字:')
        if len(x)<140:
            b.append(x)
        else:
            print('信息超出140字限制,请从新输入。')
        c += re.findall('#[^#]+#',x)
    d = [{'n':n,'c':len(c)-len(re.findall('#[^#]+#',re.sub(n,'',''.join(c.copy()))))} for n in set(c)]
    e = sorted(d,key=lambda x:x['c'],reverse=True)
    print(e[0]['n'].title())
    print(e[0]['c'])

    做了个大概,同一微博之中,话题重复的我没有排重,排重需要去掉所有非英文字母和数字的符号、并忽略大小写区别,你自己实现以下,在c+=那一行,自己追加,排序没有实现同样数量的按字母再次排序,也自己去实现一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 对于这个复杂问题的解释说明
  • ¥50 三种调度算法报错 采用的你的方案
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败