新浪微博热门话题
1,程序简介
- 新浪微博可以在发言中嵌入“话题”,即将发言中的话题文字写在一对“#”之间,就可以生成话题链接,点击链接可以看到有多少人在跟自己讨论相同或者相似的话题。
- 新浪微博还会随时更新热门话题列表,并将最热门的话题放在醒目的位置推荐大家关注。
- 本题目要求实现一个简化的热门话题推荐功能,从大量英文(因为中文分词处理比较麻烦)微博中解析出话题,找出被最多条微博提到的话题。
输入格式:
- 输入说明:输入首先给出一个正整数N(≤105),随后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
2,程序代码
# -*- coding: utf-8 -*-
"""
Created on Sun Jan 2 22:13:34 2022
Function: 新浪微博热门话题
@author: 小梁aixj
"""
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'])