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

如何基于模糊匹配(匹配度≥80)为TXT文件生成分类列并构建DataFrame

实现相似TXT文件名分类并生成带分类列的DataFrame

下面是完整的实现代码,基于你已有的基础逻辑补充了分类逻辑和DataFrame构建:

import os
import pandas as pd
from fuzzywuzzy import fuzz
from fuzzywuzzy import process

# 1. 获取指定路径下的所有txt文件
path = '../../../files'
text_files = [f for f in os.listdir(path) if f.endswith('.txt')]

# 2. 实现相似文件名分类逻辑
file_categories = {}
current_category = 1
category_map = {}

for file in text_files:
    # 检查当前文件是否能匹配到已有的分类
    match = process.extractOne(file, list(category_map.keys()), scorer=fuzz.ratio)
    if match and match[1] >= 80:
        # 匹配成功,归入对应分类
        category_map[file] = category_map[match[0]]
    else:
        # 无匹配项,新建分类
        category_map[file] = f"分类{current_category}"
        current_category += 1

# 3. 构建包含分类列的DataFrame
df = pd.DataFrame({
    "文件名": list(category_map.keys()),
    "分类": list(category_map.values())
})

print(df)

代码说明

  • 文件获取:沿用你原有的逻辑筛选出所有.txt后缀文件
  • 分类逻辑:
    • 用process.extractOne在已有的分类代表文件中查找匹配度最高的项
    • 当匹配度≥80时,将当前文件归入对应分类;否则创建新分类
    • 分类命名采用"分类+序号"的形式,你也可以改成用第一个匹配到的文件名作为分类名(比如把f"分类{current_category}"换成file)
  • DataFrame构建:将文件名和对应的分类映射转换成DataFrame,方便后续分析或导出

示例结果

假设你的文件列表是:["programmi.txt", "programmi-2.txt", "report_2024.txt", "report_final.txt", "notes.txt"],运行后得到的DataFrame会是:

文件名分类
programmi.txt分类1
programmi-2.txt分类1
report_2024.txt分类2
report_final.txt分类2
notes.txt分类3

注意事项

  • 若要提升模糊匹配的速度,建议安装python-Levenshtein库:pip install python-Levenshtein
  • 匹配阈值(80)可根据实际需求调整,数值越高分类越严格
  • 如果文件名中有重复项,会自动归入同一分类

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:17:44