Python对话列表过滤实现:按用户名及指定关键词筛选
Python对话列表过滤实现
下面是针对需求的两种过滤功能的具体实现代码:
1. 按用户名过滤发言内容
这个功能会筛选出指定用户的所有发言,并只输出纯发言文本(去掉用户名和时间戳):
def filter_by_username(conversation, target_user): filtered_content = [] for line in conversation: # 按空格拆分,最多拆成3段:用户名、时间、发言内容 parts = line.split(maxsplit=2) # 匹配用户名(忽略大小写),提取发言内容 if len(parts) >= 3 and parts[0].lower() == target_user.lower(): filtered_content.append(parts[2]) return filtered_content
示例用法
conversation = ['john 10:23:14 hey hows its going?', 'sam 10:23:20 not much you?', 'carl 10:23:14 hey guys'] # 筛选john的发言 print(filter_by_username(conversation, 'john')) # 输出: ['hey hows its going?'] # 筛选carl的发言 print(filter_by_username(conversation, 'carl')) # 输出: ['hey guys']
2. 按关键词过滤整行内容
这个功能会筛选出包含指定关键词的完整对话行,默认区分大小写,如需忽略可修改判断逻辑:
def filter_by_keyword(conversation, keyword): # 直接用列表推导式筛选包含关键词的行 return [line for line in conversation if keyword in line]
示例用法
# 搜索关键词'guys' print(filter_by_keyword(conversation, 'guys')) # 输出: ['carl 10:23:14 hey guys'] # 搜索关键词'hey' print(filter_by_keyword(conversation, 'hey')) # 输出: ['john 10:23:14 hey hows its going?', 'carl 10:23:14 hey guys']
补充说明
- 用户名过滤用
maxsplit=2是为了避免发言里的空格拆分出错,保证前两段固定是用户名和时间。 - 若要关键词过滤忽略大小写,可把判断条件改成
keyword.lower() in line.lower()。
内容的提问来源于stack exchange,提问作者Thescenario
相关产品推荐
相关产品推荐

