python利用jieba组件成批对文件形成主题词文本

【需求说明】

公司上线了公文管理系统,要求把历年所有的文件上传到服务器上,并输入主题词以便以后查询。因为文件比较多,手工输入主题词工作量比较大,利用python的jieba组件,可以方便的把文件名字符串转化为主题词,然后直接成批复制粘贴到数据库就可以了。

【jieba组件】

Jieba组件是python中一个不错的 中文分词组件,支持多种分词模式,还支持繁体分词和自定义词典。使用也比较简单。
如没有安装过jieba组件,需要事先安装:
在cmd模式下运行:pip3 intstall jieba ,完成即可
在代码前需要导入 import jieba
使用说明:
使用方式一般有两种,cut和lcut:
Jieba.cut(“str”,[cut_all=True]):将字符串str解析为多个不重复的中文词组,并放入到一个可迭代对象中返回。如加上关键字参组,cut_all=False(默认为True),则为全模式,返回所有可能构成词组的可迭代对象。如下:
在这里插入图片描述

Jieba.lcut(“str”,[cut_all=True]):将字符串str解析为多个不重复的中文词组,并放入到一个列表中返回。如加上关键字参组,cut_all=False(默认为True),则为全模式,返回所有可能构成词组的列表。
与cut不同,lcut可以直接产生一个列表,更更方便我们使用。

【实现代码】

代码不多,也都有注释,主要是对指定文件夹中的每个文件名进行分析、形成关键字列表,再用|符号组合到一起,放入文件文件。
代码如下:

'''本程序用于python从文件名中自动取得关键字并写入txt
每个文件名的关键字列表为一行,每个关键字中间用|分隔
'''
import os
import jieba

#指定文件所在文件夹和txt文件路径
rar_dir="e:/test/"
txt_dir="e:/test/keyword.txt"
# 定义遍历指定的文件夹的函数
def walkFile(file):
    for root,dirs,files in os.walk(file):
    #for root, dirs, files in os.walk(file):
        # root 表示当前访问的文件夹路径
        # dirs 表示该文件夹下的子目录名list
        # files 表示该文件夹下的文件list
        # 遍历文件
        for f in files:
            #print(os.path.join(root, f))
            lfilename=f.split('.')[0]#从文件名中取得没有扩展名的字符串
            list1=jieba.lcut(lfilename)#从文件名中得到关关键字列表
            #把列表中长度大于1的元素添加到list2中
            list2 = [sublist for sublist in list1 if len(sublist) > 1]
            #把列表中的内容添加到字符串中,中间用|号间隔
            str1 = '|'.join(list2)
            #内容写入到文本文件中
            txtfile.write(str1+'\n')
        # 遍历所有的文件夹
        for d in dirs:
            print(os.path.join(root, d))

#打开文件文本,模式为写入
txtfile = open(txt_dir, mode='w')
#遍历指定文件夹
walkFile(rar_dir)
#关闭文件
txtfile.close()

【运行效果】

因为公司的文件部分涉密,为防止领导找我麻烦,所以我用了我几年来收集的电子书作为例子来演示运行效果。
文件所在文件夹:为E\test\下面有33个电子书文件

在这里插入图片描述

代码运行后,会在文件夹下多一个keyword.txt文件,打开后可以看到:每个文件的主题词已经形成,全选复制,粘贴到数据库中就可以了。
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值