Python3转换scel文件为txt文件

scel转txt抽取词库 最近需要词库来优化分词效果,找到了有大神写好的能将搜狗词库scel转成txt的python脚本。 http://blog.youkuaiyun.com/zhangzhenhu/article/details/7014271 实际运行时因为python版本不同转换不能成功,最后终于可行。bytes与16进制字符串f = open(file_name, 'rb') data = f.read() f.close 阅读详情
# -*- coding: utf-8 -*-
import struct
import os
# 主要两部分
# 1.全局拼音表,貌似是所有的拼音组合,字典序
#       格式为(index,len,pinyin)的列表
#       index: 两个字节的整数 代表这个拼音的索引
#       len: 两个字节的整数 拼音的字节长度
#       pinyin: 当前的拼音,每个字符两个字节,总长len
#
# 2.汉语词组表
#       格式为(same,py_table_len,py_table,{word_len,word,ext_len,ext})的一个列表
#       same: 两个字节 整数 同音词数量
#       py_table_len:  两个字节 整数
#       py_table: 整数列表,每个整数两个字节,每个整数代表一个拼音的索引
#
#       word_len:两个字节 整数 代表中文词组字节数长度
#       word: 中文词组,每个中文汉字两个字节,总长度word_len
#       ext_len: 两个字节 整数 代表扩展信息的长度,好像都是10
#       ext: 扩展信息 前两个字节是一个整数(不知道是不是词频) 后八个字节全是0
#
#      {word_len,word,ext_len,ext} 一共重复same次 同音词 相同拼音表


# 拼音表偏移,
startPy = 0x1540;

# 汉语词组表偏移
startChinese = 0x2628;

# 全局拼音表
GPy_Table = {}

# 解析结果
# 元组(词频,拼音,中文词组)的列表


# 原始字节码转为字符串
def byte2str(data):
    pos = 0
    str = ''
    while pos < len(data):
        c = chr(struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0])
        if c != chr(0):
            str += c
        pos += 2
    return str

# 获取拼音表
def getPyTable(data):
    data = data[4:]
    pos = 0
    while pos < len(data):
        index = struct.unpack('H', bytes([data[pos],data[pos + 1]]))[0]
        pos += 2
        lenPy = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]
        pos += 2
        py = byte2str(data[pos:pos + lenPy])

        GPy_Table[index] = py
        pos += lenPy

# 获取一个词组的拼音
def getWordPy(data):
    pos = 0
    ret = ''
    while pos < len(data):
        index = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]
        ret += GPy_Table[index]
        pos += 2
    return ret

# 读取中文表
def getChinese(data):
    GTable = []
    pos = 0
    while pos < len(data):
        # 同音词数量
        same = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]

        # 拼音索引表长度
        pos += 2
        py_table_len = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]

        # 拼音索引表
        pos += 2
        py = getWordPy(data[pos: pos + py_table_len])

        # 中文词组
        pos += py_table_len
        for i in range(same):
            # 中文词组长度
            c_len = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]
            # 中文词组
            pos += 2
            word = byte2str(data[pos: pos + c_len])
            # 扩展数据长度
            pos += c_len
            ext_len = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]
            # 词频
            pos += 2
            count = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]

            # 保存
            GTable.append((count, py, word))

            # 到下个词的偏移位置
            pos += ext_len
    return GTable


def scel2txt(file_name):
    print('-' * 60)
    with open(file_name, 'rb') as f:
        data = f.read()

    print("词库名:", byte2str(data[0x130:0x338])) # .encode('GB18030')
    print("词库类型:", byte2str(data[0x338:0x540]))
    print("描述信息:", byte2str(data[0x540:0xd40]))
    print("词库示例:", byte2str(data[0xd40:startPy]))

    getPyTable(data[startPy:startChinese])
    getChinese(data[startChinese:])
    return getChinese(data[startChinese:])

if __name__ == '__main__':
    # scel所在文件夹路径
    in_path = r"C:\Users\mzj\Desktop\city\city\text"
    # 输出词典所在文件夹路径
    out_path = r"C:\Users\mzj\Desktop\city\city\out"
    fin = [fname for fname in os.listdir(in_path) if fname[-5:] == ".scel"]
    for f in fin:
        try:
            for word in scel2txt(os.path.join(in_path, f)):
                file_path=(os.path.join(out_path, str(f).split('.')[0] + '.txt'))
                # 保存结果
                with open(file_path,'a+',encoding='utf-8')as file:
                    file.write(word[2] + '\n')
            os.remove(os.path.join(in_path, f))
        except Exception as e:
            print(e)
            pass

 

【板栗糖GIS】——批量转换与重命名实战:从搜狗scel词库到规范txt文件 本文详细介绍了如何将搜狗输入法私有格式的SCEL词库文件批量转换为规范的TXT文本文件,并解决转换后文件名混乱的问题。通过推荐在线转换工具和批量重命名工具,结合系统命令与Python脚本,提供了一套完整的格式转换与文件规范化工作流,帮助用户高效处理中文文本数据,适用于自然语言处理与自定义词库构建。 阅读详情

相关推荐

不只是转换:聊聊搜狗.scel词库文件的结构与那些好用的离线处理工具

本文深入解析了搜狗.scel词库文件的二进制结构,并对比了多种本地化处理工具,包括scel2txt、scel4py和SogouToolkit。通过实战案例展示了词库合并、去重、词频分析等高级技巧,帮助用户高效处理离线词库文件,提升自然语言处理项目的效率。

weixin_42531886的博客 315

SCEL2TXT: 把SCEL文档转换为纯文本的利器

SCEL2TXT: 把SCEL文档转换为纯文本的利器 去发现同类优质开源项目:https://gitcode.com/ 在数据处理和文件格式转换的世界里,工具的选择至关重要。今天,我们要向大家介绍一个实用的小型项目——SCEL2TXT,这是一个轻量级的Python库,用于将SCEL(一种特定的表格格式)文件转换为常见的纯文本或CSV格式。如果你经常需要处理这类文件,那么SCEL2TXT将会是你不可...

gitblog_00021的博客 1705

Linux下用Python解析搜狗.scel词库并导入ibus

搜狗输入法词库(.scel)是一种私有二进制格式,广泛用于中文输入场景,但其封闭结构长期阻碍Linux用户本地化使用。该格式基于固定头部、拼音ID映射、UTF-16LE汉字编码与索引表寻址等核心原理,具备高密度存储和词频权重特性,技术价值在于支持离线、可审计、可定制的输入体验。典型应用场景包括Ubuntu/Fedora等发行版的ibus输入法增强、RIME或libpinyin词库迁移、以及开发者对中文NLP基础资源的自主治理。本文聚焦.scel文件结构逆向与Python解析实践,结合hexdump、stru

weixin_33393017的博客 273

探索词库转换的神奇之旅:scel2txt,让输入更智能!

探索词库转换的神奇之旅:scel2txt,让输入更智能! 去发现同类优质开源项目:https://gitcode.com/ 在数字化时代的今天,高效和个性化的输入体验成为了用户追求的关键。而这一切,离不开强大的词库支持。今天,我们向您推荐一款卓越的开源工具——scel2txt,它由Python3精心打造,旨在无缝桥接搜狗细胞词库与鼠须管(Rime)词库世界,解锁个性化输入的新纪元。 项目介绍 sc...

gitblog_00059的博客 1005

scel2txt.py

文件夹下所有.scel文件转化为jieba用户词典文件,可以直接用jieba.load_userdict加载,代码中的.scel路径改成自己指定的文件路径就能用。词性默认为名词

emoji-scel2txt:搜狗颜文字细胞词库转TXT

emoji-scel2txt 搜狗颜文字细胞词库转TXT 用Ruby写的处理搜狗颜文字细胞词库,提取出其中的颜文字拼音和颜文字,输出时每行一个 注意 此程序目前仅能处理搜狗的颜文字细胞词库,其他词库暂不支持。颜文字细胞词库可从网页 定义生成下载。 文件说明 scel2txt.rb: 转换程序 y1087025.scel: 从搜狗颜文字网站生成的颜文字细胞词库文件 output.txt: 颜文字细胞词库经转换生成的颜文字及拼音列表

搜狗词库.scel文件转换为.txt文件(python3)

import struct import os # 拼音表偏移, startPy = 0x1540 # 汉语词组表偏移 startChinese = 0x2628 # 全局拼音表 GPy_Table = {} # 解析结果 # 元组(词频,拼音,中文词组)的列表 GTable = [] # 原始字节码转为字符串 def byte2str(data): pos = 0 str = '' while pos < len(data): c = chr(str.

qq_53639230的博客 5077

scel转换txt工具

用于将scel词库文件转换成为txt文件

python成语接龙代码_#python# 成语接龙(一)

本来想写一个机器人成语接龙的,太复杂了,弄一个可以找到所有的可以“一招制敌”的成语,就是没办法再被接龙的成语。第一步是找一个带拼音的成语字库,网上找了半天,没找到合适的,发现搜狗输入法自带成语词库,就拿来解析了。搜狗的字库是scel格式,内容包括拼音表和字库两部分,它们的结构如下所示:解析代码如下 [parse_scel.py]:为了避开烦人的字符编码问题,用的是python 3增加了print,...

weixin_39808803的博客 537

Python3 scel 文件转换成 txt

scel 文件转换成 txt Python

SELAEFiles:转换txt和AD243的JSON-开源

它将txt和AD243格式的投注文件转换为SELAE定义的新JSON文件格式,用于在数字媒体(ASD)上进行投注。 (将SELAE公司的ad243文件中的文本转换为JSON格式的文件)。

python - 搜狗词库 (.scel 文件转 txt)

python - 搜狗词库 (.scel 文件转 txt) 解析示例: 词库名: 妖神记【官方推荐】 词库类型: 动漫 描述信息: 妖神记妖神一出,谁与争锋!霸气词库来袭,小编整理了其中的家族,人名,武器等,让你打出字来so easy。欢迎大家前来补充哦! 词库示例: 天道之力 圣血翼蛟 天痕世家 圣灵大陆 龙墟界域 解析 妖神记【官方推荐】.scel -> /Users/xxx/Downloads/搜狗词库/output/妖神记【官方推荐】.txt 代码: # -*- coding: ..

草青工作室 的专栏 1564

STM32F103xx / STM32F429VET6最小系统原理图

心血来潮想试一下STM32F4系列和F1系列在编程上有什么差别,手头没有开发板,本着能勤俭节约的原则自己先做一块看看能不能成,看了一下STM32F429VET6的芯片在F429xx中最便宜,对照着数据手册绘制了原理图画了PCB,目前打板中,焊接完如果跑不通回来修改文章。这里我们可以看到,VDD是标准工作电压,VDDA是模拟工作电压,且VDDA必须与VDD等电位,VBAT是备份工作电压,一般接纽扣电池电源,如果存在VREF+引脚,则要求VDDA-VREF+ < 1.2V。截图下来比较糊,不知道为什么。

m0_51294753的博客 1万+

将搜狗词库.scel格式转化为.txt格式

由于项目中要用到词库,而下载的搜狗词库是.scel格式,所以就用python脚本将搜狗词库.scel格式文件转化为.txt格式文件。 亲测可用! #!/bin/python # -*- coding: utf-8 -*- import struct import sys import binascii import pdb try: reload(sys) sys.s

小白成神路 1万+

10.2 在新能源、储能及电网节点的应用实践

构网型变流器技术在电力系统中的应用进展 构网型变流器技术正从理论研究走向规模化工程应用,为新能源并网提供主动支撑能力。该技术在光伏电站采用"部分构网"混合架构,由构网单元实现黑启动和弱网稳定;在风电场利用叶轮动能提供惯量响应。储能系统是理想的构网载体,可提供快速调频和动态电压支撑。在电网节点,构网型STATCOM可增强弱电网电压稳定性,大容量变流器可替代传统调相机。当前面临标准滞后、宽频振荡风险等共性挑战,需在可靠性、经济性间取得平衡。系统级协调控制和精确阻抗建模是应用成功的关键。

技术工作者 1109

完整指南:从基础到高级使用 Semantic Kernel

通过本文的学习,你已经掌握了从基础到高级的使用方法。安装并配置。使用简单的文本生成和自然语言处理任务。利用任务链和工具扩展构建复杂的工作流。通过记忆管理上下文,创建更智能的应用。扩展多模态处理能力,集成图像和音频分析。将应用部署到云端,并通过 Azure Functions 提供智能服务。无论是构建简单的对话应用,还是创建多模态智能服务,都提供了强大的工具和灵活的扩展机制。希望这篇文章能帮助你更好地理解并运用这个框架,构建出更加智能和高效的应用。

net core ,前端 ,python 全栈开发 2805

搜狗词库scel格式转为txt格式(python3版本)

工作中需要自建一些人名地名的数据库 想到搜狗输入法里面有不少现成的数据可以利用一下 参考教程: 搜狗词库scel格式转为txt格式(python3版本)(https://blog.youkuaiyun.com/gsch_12/article/details/82083474) 直接复制代码 妈哎 太好用了吧 一次成功! ...

一个新人小白的自学python记录 1790

海康威视VS互联网大厂:薪资、福利、工作强度全方位对比

本文全面对比了海康威视与互联网大厂在薪资、福利和工作强度等方面的差异。海康威视提供稳定的薪资结构和较低的工作强度,适合追求专业深度的职场人;而互联网大厂则以高薪和快速成长吸引人才,但工作压力较大。文章还分析了职业发展路径和长期价值,帮助求职者做出明智选择。

weixin_29171129的博客 386

【自然语言处理 词库建设】怎样将搜狗的细胞词库scel格式转化成txt格式

搜狗词库:https://pinyin.sogou.com/dict/ 1、先下载搜狗词库到本地,文件格式为.scel后缀 2、利用python3 自动转换成txt python3版本: # -*- coding:utf-8 -*- import struct import os # 由于原代码不适用python3且有大量bug # 以及有函数没有必要使用且一些代码书写不太规范或冗余 ...

赖德发的博客 5119

射频接收机本振相噪指标计算:从倒易混频到GSM实战

在射频接收机设计中,相位噪声是衡量本振信号频谱纯度、影响系统灵敏度的关键指标。其核心影响机制源于倒易混频原理:当不纯净的本振信号与强带外阻塞信号混频时,本振的噪声边带会被转换到中频通带内,从而抬升接收机噪声基底。这一过程直接决定了接收机在阻塞测试等场景下的性能极限。从技术价值看,精确计算本振相噪要求,是进行系统噪声预算、实现成本与性能权衡的核心依据。尤其在手机、基站等对灵敏度要求极高的应用中,它指导着锁相环和压控振荡器的选型与设计。本文以经典的GSM DCS1800标准为例,通过详细的公式推导与变量分析,演

weixin_30368405的博客 325

最新,弱小目标检测数据集,持续更新中。

梳理了最新的下弱小目标检测数据库,方便后续开发使用

weixin_43331421的博客 4092

搜狗词库scel格式转txt文本

由于项目中要用到词库,而下载的搜狗词库是.scel格式,所以就用python脚本将搜狗词库.scel格式文件转化为.txt格式文件。亲测可用![python] view plain copyimport struct  import sys  import binascii  import pdb    try:      reload(sys)      sys.setdefaultencodi...

Beyond_F4的博客 5401

哨兵1号回波数据(L0级)包格式解析与成像参数提取

提取哨兵1号数据包的辅助数据、回波数据、定标数据。matlab代码在文末

3124
上一篇: Python执行js代码
下一篇: scrapy 定时关闭
唐僧不爱八戒
博客等级 码龄9年 158粉丝 84原创
评论 23
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值