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

如何在文件中按指定关键词将字符串拆分至不同集合?

死循环原因排查
  • 循环条件变量未更新:初始读取第一行COUNTRIES后,变量l的值在循环体内从未改变,导致while l.startswith('COUNTRIES')永远为真,直接触发死循环。
  • 读取行的代码错误:j = input.readline未加括号,实际是把函数对象赋值给j,而非读取到的行内容,后续j == 'PEOPLE'的判断永远不成立,无法触发break。
  • 语法与逻辑错误:if j == 'PEOPLE'末尾缺少冒号:,且文件读取的行默认包含换行符(如'PEOPLE\n'),直接与'PEOPLE'对比永远不相等。
实现关键词拆分的正确代码

我们可以先定义目标关键词集合,遍历文件行时,遇到关键词则新建集合,后续非空行(排除空行和下一个关键词)归入当前集合,最终将所有集合存入列表:

result = []
current_set = None
target_keys = {'COUNTRIES', 'PEOPLE'}

with open('countries.txt', 'r') as f:
    for line in f:
        line = line.strip()  # 去除换行符与首尾空白
        if not line:
            continue  # 跳过空行
        if line in target_keys:
            # 触发关键词,新建集合并加入结果列表
            current_set = set()
            result.append(current_set)
        elif current_set is not None:
            # 将内容归入当前活跃集合
            current_set.add(line)

print(result)

运行后输出与期望一致:

[{'America', 'Canada', 'Russia', 'Poland'}, {'George', 'John', 'James', 'Kenny'}]

代码说明

  • 用with语句自动管理文件句柄,避免资源泄漏。
  • strip()处理每行内容,同时跳过空行,避免无效数据干扰。
  • target_keys集中存放关键词,后续新增分类只需修改该集合即可,扩展性强。
  • 遇到关键词时初始化新集合,后续行直接归入当前集合,逻辑清晰且彻底避免死循环问题。

内容的提问来源于stack exchange,提问作者Polyaness

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:10:36