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

Python正则文档分类异常:无匹配文件误存keyword2文件夹

文档分类逻辑错误修复

问题场景

需要根据文档文本中的关键词将文档分类到对应文件夹:

  • 含keyword1 → 存入keyword1文件夹
  • 含keyword2 → 存入keyword2文件夹
  • 两者均不含 → 存入unknown文件夹

当前实现中,前两类分类正常,但无匹配关键词的文档被错误归入keyword2文件夹。

错误原因

原代码仅对keyword1进行匹配判断,当keyword1不匹配时(not match),直接默认文档包含keyword2,完全跳过了keyword2的匹配检查。同时,elif not match会覆盖所有不匹配keyword1的情况,导致else分支(对应unknown分类)永远无法执行。另外原代码未定义keyword2变量却直接使用,存在语法隐患。

修复后的代码

import re
import os
import shutil

# 定义关键词
keyword1 = "keyword1"
keyword2 = "keyword2"

for k, text_content in text_dict.items():
    file_name1 = k.split('.')[0]
    # 分别检查两个关键词的匹配情况
    match1 = re.search(r"keyword1", text_content, flags=re.DOTALL|re.IGNORECASE)
    match2 = re.search(r"keyword2", text_content, flags=re.DOTALL|re.IGNORECASE)

    if match1:
        print(f"The keyword '{keyword1}' is present in the text.--->", k)
        os.makedirs('keyword1', exist_ok=True)
        shutil.copytree(os.path.join('imgs', file_name1), os.path.join('keyword1', file_name1), dirs_exist_ok=True)
    elif match2:
        print(f"The keyword '{keyword2}' is present in the text.--->", k)
        os.makedirs('keyword2', exist_ok=True)
        shutil.copytree(os.path.join('imgs', file_name1), os.path.join('keyword2', file_name1), dirs_exist_ok=True)
    else:
        print(f"The keywords '{keyword1}' and {keyword2} are not present in the text.--->", k)
        os.makedirs('unknown', exist_ok=True)
        shutil.copytree(os.path.join('imgs', file_name1), os.path.join('unknown', file_name1), dirs_exist_ok=True)

关键调整说明

  1. 新增keyword2变量定义,修复未声明变量的问题
  2. 分别对两个关键词执行匹配检查,用match1和match2存储各自的匹配结果
  3. 重构分支逻辑:先判断keyword1匹配,再判断keyword2匹配,最后进入unknown分支,确保所有分类场景都被正确覆盖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:17:05