脚本只经过了初步测试,符合我自己的需求,有其他需求请自行修改(也是一个学习的过程),Bug能修就修,修不了我也没办法。
脚本功能:遍历data目录下的所有文件(忽略-开头的文件),并根据输入的命令行参数输出手心输入法、搜狗输入法、百度输入法词库。支持多音字。
命令行参数:baidu、sougou、shouxin
PS:data目录下的文件编码为UTF-8,每一行一个词。
[Github地址](https://github.com/MisterZakary/input_method_thesaurus_generation/blob/main/main.py)
代码如下
```Python
# 脚本功能:遍历data目录下的所有文件(忽略-开头的文件),并根据输入的命令行参数输出手心输入法、搜狗输入法、百度输入法词库。支持多音字。
# 命令行参数:baidu、sougou、shouxin
# data目录下的文件编码为UTF-8,每一行一个词
import os
import argparse
from pypinyin import pinyin, Style
# 生成拼音
def convert_to_pinyin(text):
pinyin_list = pinyin(text, style=Style.NORMAL, heteronym=True,errors="ignore")
pinyin_str = "'".join([''.join(char) for char in pinyin_list])
return pinyin_str
# 写入文件
def read_file_in_chunks(file_path, output_file_name, output_encoding, output_format, chunk_size=100):
with open(file_path, 'r', encoding='utf-8') as file:
lines = file.readlines()
if lines[-1] == '\n':
lines = lines[:-1] # 如果最后一行是空白行,则删除
for line in lines:
pinyin_line = convert_to_pinyin(line.strip())
if output_format == 'baidu' or output_format == 'shouxin':
new_line = f"{line.strip()}\t{pinyin_line}\t3"
elif output_format == 'sougou':
new_line = f"{pinyin_line}\t{line.strip()}"
with open(output_file_name, "a", encoding=output_encoding) as output_file:
output_file.write(new_line + '\n')
# 添加命令行参数
parser = argparse.ArgumentParser(description='请输入你要生成的词库类型,sougou、baidu、shouxin')
parser.add_argument('output_format', choices=['baidu', 'shouxin', 'sougou'], help='Choose the output format')
args = parser.parse_args()
# 根据命令行参数选择输出文件名、编码格式和格式
if args.output_format == 'baidu':
output_file_name = '百度.txt'
output_encoding = 'utf-16'
output_form