import struct
import os
# 拼音表偏移,
startPy = 0x1540# 汉语词组表偏移
startChinese = 0x2628# 全局拼音表
GPy_Table = {}# 解析结果
# 元组(词频,拼音,中文词组)的列表
GTable = []# 原始字节码转为字符串
def byte2str(data):pos = 0str = ''while pos < len(data):c = chr(struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0])if c != chr(0):str += cpos += 2return str# 获取拼音表
def getPyTable(data):data = data[4:]pos = 0while pos < len(data):index = struct.unpack('H', bytes([data[pos],data[pos + 1]]))[0]pos += 2lenPy = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]pos += 2py = byte2str(data[pos:pos + lenPy])GPy_Table[index] = pypos += lenPy# 获取一个词组的拼音
def getWordPy(data):pos = 0ret = ''while pos < len(data):index = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]ret += GPy_Table[index]pos += 2return ret# 读取中文表
def getChinese(data):pos = 0while pos < len(data):# 同音词数量same = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 拼音索引表长度pos += 2py_table_len = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 拼音索引表pos += 2py = getWordPy(data[pos: pos + py_table_len])# 中文词组pos += py_table_lenfor i in range(same):# 中文词组长度c_len = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 中文词组pos += 2word = byte2str(data[pos: pos + c_len])# 扩展数据长度pos += c_lenext_len = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 词频pos += 2count = struct.unpack('H', bytes([data[pos], data[pos + 1]]))[0]# 保存GTable.append((count, py, word))# 到下个词的偏移位置pos += ext_lendef scel2txt(in_path,file_name):print('-' * 60)with open(in_path+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:])if __name__ == '__main__':# scel所在文件夹路径in_path = u"D:/下载内容/"# 输出词典所在文件夹路径out_path = u"../static/yixue_dict.txt"fin = [fname for fname in os.listdir(in_path) if fname[-5:] == ".scel"]# print(fin)for f in fin:scel2txt(in_path,f)# 保存结果with open(out_path, 'w', encoding='utf8') as f:f.writelines([word+'\n' for count, py, word in GTable])

成功生成txt文件!

搜狗词库.scel文件转换为.txt文件(python3)相关推荐

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

    1.想用搜狗的词库来辅助jieba分词,需要把词库从scel转成txt格式. 在网上找到了大神的python2版本,https://blog.csdn.net/zhangzhenhu/article/ ...

  2. 爬取词库,使用jieba分词库,自定义dict.txt文件+将搜狗词库.scel文件为.txt文件

    一:爬取词库,使用jieba分词库,自定义dict.txt文件 import jiebafrom urllib.request import urlopen from bs4 import Beaut ...

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

    [2020年5月28日更新:有一说一,这篇文章是我2017年底在新浪工作时处理家居.房产频道相关业务时的实践,代码是后来从自己代码库直接粘贴的,当然转码部分的代码是借鉴的,当时也是查阅了几种方法,一一 ...

  4. python读取文本两个数字的成语_只要2步!将搜狗词库(scel)转为Python可读的文本...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 将搜狗词库(scel)转化为python可读的文本(text)的方法方法 1. 利用R语言(方法简单) ① 载入词库(R语言) library(Rword ...

  5. python 将excel文件转换为txt文件_python利用pandas将excel文件转换为txt文件的方法

    python将数据换为txt的方法有很多,可以用xlrd库实现.本人比较懒,不想按太多用的少的插件,利用已有库pandas将excel文件转换为txt文件. 直接上代码: ''' function:将 ...

  6. python excel文件转换成字符串_python利用pandas将excel文件转换为txt文件的方法

    python将数据换为txt的方法有很多,可以用xlrd库实现.本人比较懒,不想按太多用的少的插件,利用已有库pandas将excel文件转换为txt文件. 直接上代码: ''' function:将 ...

  7. python npy文件_python实现npy格式文件转换为txt文件操作

    如下代码会将npy的格式数据读出,并且输出来到控制台: import numpy as np ##设置全部数据,不输出省略号 import sys np.set_printoptions(thresh ...

  8. python如何打开npy文件_python实现npy格式文件转换为txt文件操作

    如下代码会将npy的格式数据读出,并且输出来到控制台: import numpy as np ##设置全部数据,不输出省略号 import sys np.set_printoptions(thresh ...

  9. python如何打开npy文件_操作python实现npy格式文件转换为txt文件

    如下代码会将npy的格式数据读出,并且输出来到控制台:import numpy as np ##设置全部数据,不输出省略号 import sys np.set_printoptions(thresho ...

  10. python往npy写入数据_操作python实现npy格式文件转换为txt文件

    如下代码会将npy的格式数据读出,并且输出来到控制台:import numpy as np ##设置全部数据,不输出省略号 import sys np.set_printoptions(thresho ...

最新文章

  1. 关闭vmware喇叭报警声
  2. TensorFlow 1.8.0正式发布,Bug修复和改进内容都在这里了
  3. 北京公交线路查询(离线)
  4. linux命令(51):set 指定行,直接替换并修改文件
  5. BLE安全机制从入门到放弃
  6. STL-容器库101--array【C11】
  7. python 股票自动交易从零开始_Python股票自动交易从零开始
  8. moxy json介绍_MOXy的@XmlVariableNode – JSON模式示例
  9. java 截取两个字符之间的字符串_java里面如何截取两个关键字中间的字符串?
  10. 大型分布式网站术语分析
  11. 正向代理和反向代理(概念特点区别)
  12. matlab实现对图像的简单幻方置乱
  13. 对比不同主流存储格式(csv, feather, jay, h5, parquet, pickle)的读取效率
  14. python封装举例_卷1:第14章 Python打包工具
  15. b站评论功能(一级评论到n级)
  16. 帆软10.0 冻结行 冻结列的 点击行变色
  17. 基于docker安装zabbix
  18. 《黑马程序员2023新版黑马程序员大数据入门到实战教程,大数据开发必会的Hadoop、Hive,云平台实战项目》学习笔记总目录
  19. 计算机逻辑算法,算法逻辑
  20. 天空飘彩带的css3代码_纯CSS3实现飘逸洒脱带有飞行效果的三级下拉菜单

热门文章

  1. Xshell5免费版安装使用说明
  2. 数学基础知识总结 —— 6. 基本矩阵运算公式
  3. 新罗马字体linux,WPS文字办公—将阿拉伯数字替换为新款Times New Roman字体
  4. 用设计解决问题 ——访小米科技、小米路由器事业部总经理 唐沐
  5. web测试之总流程归纳
  6. BP神经网络预测模型
  7. jsp购物车系统01
  8. jsp购物车简单实现思想(一)
  9. java获取文本文件的编码格式
  10. 解决智慧树考试酷无法复制粘粘的问题