[problem help] 合并fcitx5字典 Resolved
Tofloor
poster avatar
fslong
deepin beta test group
2024-06-06 07:22
Author

现在fcitx5装了很多字典,导入导出太麻烦了,有没有小伙伴知道怎么合并字典?

image.png

我想做一个自己专门的字典。


感谢楼下小伙伴,已经搞定,写了个py脚本排序+去重+合并:

import os

# 获取当前目录
path = os.path.abspath(os.path.dirname(__file__))

# 获取家目录
home = os.path.expanduser('~')
# 组合字典目录
dicts_directory = os.path.join(home, ".local/share/fcitx5/pinyin")
# 输出合并后字典的文件名
output_file = os.path.join(path, "合并后字典.dict")
# 临时文件名
all_dict = os.path.join(path, "all_dict.txt")
# 总的字典
all_text = ""
# 遍历fcitx5字典
for root, dirs, files in os.walk(dicts_directory):
    for file in files:
        if (file.endswith('.dict')):
            os.system(
                f"libime_pinyindict -d '{os.path.join(root, file)}' {all_dict}")
            with open(all_dict, 'r', encoding='utf-8') as f:
                all_text += f.read()

new_text = ""
list_text = []
# 按换行分割
lines = all_text.split("\n")
# 排序
lines.sort()
# 第一个人不可能和别人重复
new_text += (lines[0]+"\n")
# 遍历去重
for i in range(1, len(lines)):
    # 进度条
    print('-'*(i*50//len(lines))+f"> {i*100/len(lines):.2f}%", end='\r')
    # 如果跟上一个不一样就是可以要的
    if lines[i] != lines[i-1]:
        new_text += (lines[i]+"\n")
print('\n处理完毕')
# 写入到txt文件中
with open(all_dict, 'w', encoding='utf-8') as f:
    f.write(new_text)
# 转换成fcitx5的字典
os.system(f"libime_pinyindict {all_dict} {output_file}")

Reply Favorite View the author
All Replies
哄哄
deepin
2024-06-06 08:51
#1

#将词典转换为txt。

libime_tabledict -d ×××.dict ×××.txt

将全部文本复制粘贴到同一个×××.txt中。

#将txt转换为词典。

libime_tabledict ×××.txt ×××.dict

注意:请先备份后再操作,风险自行承担。

Reply View the author
DebuggerX
deepin
2024-06-06 09:18
#2
#!/bin/bash

touch all.txt

dictionaries=$(ls *.dict)

for dict in $dictionaries
do
  libime_pinyindict -d $dict ${dict%.*}.txt
  cat ${dict%.*}.txt >> all.txt
done

libime_pinyindict all.txt all.dict

把上面的代码保存成sh脚本,在词库目录下执行即可得到合并后的 all.dict 词库

Reply View the author
fslong
deepin beta test group
2024-06-06 09:24
#3
哄哄

#将词典转换为txt。

libime_tabledict -d ×××.dict ×××.txt

将全部文本复制粘贴到同一个×××.txt中。

#将txt转换为词典。

libime_tabledict ×××.txt ×××.dict

注意:请先备份后再操作,风险自行承担。

好的,谢谢!

Reply View the author
fslong
deepin beta test group
2024-06-06 09:25
#4
DebuggerX
#!/bin/bash

touch all.txt

dictionaries=$(ls *.dict)

for dict in $dictionaries
do
  libime_pinyindict -d $dict ${dict%.*}.txt
  cat ${dict%.*}.txt >> all.txt
done

libime_pinyindict all.txt all.dict

把上面的代码保存成sh脚本,在词库目录下执行即可得到合并后的 all.dict 词库

谢谢大佬!

Reply View the author
DebuggerX
deepin
2024-06-06 09:28
#5
哄哄

#将词典转换为txt。

libime_tabledict -d ×××.dict ×××.txt

将全部文本复制粘贴到同一个×××.txt中。

#将txt转换为词典。

libime_tabledict ×××.txt ×××.dict

注意:请先备份后再操作,风险自行承担。

你这个命令是转码表的,用来转词典会报错。

Reply View the author
哄哄
deepin
2024-06-06 09:42
#6
DebuggerX

你这个命令是转码表的,用来转词典会报错。

谢谢指正,libime_pinyindict 这个命令我确实未使用过。主要是我使用的是五笔,都是使用 libime_tabledict ,这两个命令出入未了解。

Reply View the author
catubibu
deepin
2024-06-06 09:53
#7

搜狗词典拿来就可以用么?

Reply View the author
DebuggerX
deepin
2024-06-06 10:23
#8
catubibu

搜狗词典拿来就可以用么?

image.png
fcitx5设置界面里的

Reply View the author
catubibu
deepin
2024-06-06 12:07
#9
DebuggerX

image.png
fcitx5设置界面里的

谢谢,原来是导出导入大法

Reply View the author
兆兆嘟嘟嘟
deepin
2024-06-06 20:15
#10
哄哄

#将词典转换为txt。

libime_tabledict -d ×××.dict ×××.txt

将全部文本复制粘贴到同一个×××.txt中。

#将txt转换为词典。

libime_tabledict ×××.txt ×××.dict

注意:请先备份后再操作,风险自行承担。

能不能直接用文本编辑器打开dict文件?

Reply View the author
fslong
deepin beta test group
2024-06-06 21:20
#11
兆兆嘟嘟嘟

能不能直接用文本编辑器打开dict文件?

不能,这个是二进制文件。

我上面那个python脚本会生成一个 all_text.txt文件,这个格式的可以直接编辑也可以直接导入。

Reply View the author