我正在尝试从startdict syn文件中提取数据。
我正在尝试转换数据文件:
> file Babylon_Korean_English.syn
Babylon_Korean_English.syn: data
进入纯文本文件。
该文件可在此处找到:http://abloz.com/huzheng/stardict-dic/babylon/bidirectional/stardict-babylon-Babylon_Korean_English-2.4.2.tar.bz2在tar.bz2
中我希望能够从文件中提取行,但是如果我这样做的话,例如:
> grep 느려 Babylon_Korean_English.syn
我只收到回复:
Binary file Babylon_Korean_English.syn matches
而不是能够找到整行或在文件前后搜索多个字符。
我也试过了:
> strings Babylon_Korean_English.syn
不输出任何东西。
尝试输出带有'head'的第一行,给出如下文本:
...�간헐적일거야�간헐적일거예요...
我希望能够看到文本文件,而不是那个小 。
有关文件格式的信息如下:
来自http://www.stardict.org/StarDictFileFormat
{4}。 “,syn”文件的格式。 这个文件是可选的,你应该注意到树字典不需要这个文件。 只有StarDict-2.4.8和更新版本支持此文件。
.syn文件包含同义词的信息,即输入时的含义 同义词,StarDict将搜索与其相关的另一个单词。
格式很简单。每个项目包含一个字符串和一个数字。 synonym_word; //由'\ 0'终止的utf-8字符串。 original_word_index; // .idx文件中的原始单词索引。 然后其他项目没有分离。 当您输入synonym_word时,StarDict将搜索original_word;
“synonym_word”的长度应小于256.在其他情况下 单词,(strlen(word)< 256)。 original_word_index是网络字节顺序中的32位无符号数。 两个或更多个项目可以具有相同的“synonym_word” original_word_index。 必须使用带有synonym_word的stardict_strcmp()对项目进行排序。
答案 0 :(得分:0)
我终于能够通过下载BGL文件解析syn文件,然后使用pyglossary创建一个新的syn文件,修改如下:
./pyglossary > git diff pyglossary/plugins/stardict.py
diff --git a/pyglossary/plugins/stardict.py b/pyglossary/plugins/stardict.py
@@ -392,7 +392,7 @@ class StarDictWriter:
- synStr += item[0] + '\x00' + intToBinStr(item[1], 4)
+ synStr += item[0] + ' ' + str(item[1]) + "\n"
这符合我的目的,因为我仍然可以访问.bgl文件。