chm 转化为 html 转化为 txt

本文介绍了一款实用脚本工具,该工具可以将CHM格式文件转换为TXT文本,并进一步将其中的HTML内容提取出来转化为Excel文件。此过程涉及文件读取、HTML标签去除、文本标准化等步骤,适用于批量处理技术文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

# -*- coding: utf-8 -*-
# @Time    : 2020/10/16 14:09 PM
# @Author  : yangkaitong
# @FileName: preprocessing.py

######################################################################
##    win下bat运行该命令,会将chm转化为txt,部分会转化成html            ##
##      hh -decompile   D:\Desktop\  123.chm                        ##
##    遗憾的是部分会是html,所以该脚本旨在转化html为excel              ##
######################################################################

import re
import os
import pandas as pd


def normalizing(text:str):
    new_text = []
    line = text.split("\n")
    drop_line_flag = ["Top&nbsp"," ","Previous ","body","Next"]
    replace_line_flag = ["?"]
    def drop_flag(cur_line):
        for flag in drop_line_flag:
            if flag in cur_line:
                return True
        return False
    for cur_line in line:
        cur_line = cur_line.strip()
        if cur_line == "":
            continue
        elif drop_flag(cur_line):
            continue
        elif len(new_text)>0 and cur_line in new_text[-1]:
            continue
        else:
            for flag in replace_line_flag:
                cur_line = cur_line.replace(flag,"")
            new_text.append(cur_line)
    return "".join(new_text)


def html_tag_rm(content: str):
    dr = re.compile(r'<[^>]+>',re.S)
    return dr.sub('',content)


def read_htm(file):
    htmlf = open(file,'r')
    htmlcont = htmlf.read()
    return htmlcont

    
def get_text(file):
    html = read_htm(file)
    text = html_tag_rm(html)
    text = normalizing(text)
    return text


def htm2csv(path,save_path):
    #path html总目录
    #最后保存的excel文件路径
    temp_list_text = []
    temp_list_filename = []
    for file in os.listdir(path):
        file_path = os.path.join(path, file)
        if os.path.isfile(file_path):
            text = get_text(file_path)
            if text!="":
                temp_list_text.append(text)
                temp_list_filename.append(file)
        else:
            print("%s 不存在"%file_path)
    temp_dict = {'file_name': temp_list_filename,'text': temp_list_text}
    df = pd.DataFrame(temp_dict)
    df.to_excel(save_path)


if __name__ == '__main__':
    path = "data_dir"
    save_path = r"result.xlsx"
    htm2csv(path,save_path)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值