You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:57:17