汉字基因字典是朱邦复先生编修的字典. 字典内容多取自康熙字典, 但加入了汉字基因的概念: 每个单字以其基因字首字身加以解释. 为学习 "汉字" 的好材料. 本模组作为示范用途, 仅供查询单字, 并不涉及朱老汉字基因的诸种妙用.
#--BIG5-- (此行为暗号, 向中蟒表明本文件用大五编码)
从 sys 载入 modules
从 os.path 载入 dirname, join
基因字典 = {}
路 = dirname(modules[__名称__].__档案__)
取 文件 自 [ 'A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1',
'K1', 'L1', 'M1', 'N1', 'O1', 'P1', 'Q1', 'R1', 'S1', 'T1',
'U1', 'V1', 'W1', 'X1', 'Y1' ]:
全文 = 打开(join(路,文件+'.TXT')).读入().强设编码('大五')
全文 = 全文.替换('\r\n','\n')
条列 = 全文.分割('\n@')
取 条 自 条列:
目 = 条[2:4]
基因字典[目] = 条
写 """共得 %i 条""".强设编码("大五")%(长度(基因字典))
删除 全文, 目, 条, 条列, dirname, join, modules, 文件
定义 查(字):
如 长度(字) != 2:
写 """只能查询单字""".强设编码("大五")
传回 空
如 字.字串编码() == '国标':
字 = 字.国标变大五()
如 基因字典.有(字):
传回 基因字典[字]
否则:
传回 """字典中无此字\n""".强设编码("大五")
定义 问(字):
写 查(字)
基因字典的内文如下:
@【日】 日 ㄖ Ryh
象形-甲骨文
太阳。
: 时日:太阳出没一次为一日,分为二十四时。
落日:下落中的太阳。
日晖:日光影响下,人的感受。
日光:日发出强烈光线,人得以见。
日圭:古代以日影计时,其计时器名日圭、日规或日晷。
日历:记载时间之历表。
日子:指定词。指生活所经历的时间。
日记:逐日记录之文稿。
: 明日:主观立场所在的下一天。
昨日:主观立场所在的上一天。
今日:主观立场所在的当天。
前日:主观立场所在的上两天。
日蚀:月绕行至日及地球之间,遮没了太阳,谓之日蚀。
日落:日行至西天,时已晚,落于地平线下。
日出:日由东方升起,是一日之始。
@【昌】 日日 ㄔㄤ Chang
字首[日]: 太阳。
字身[曰]: 张口说。
会意-甲骨文
说太阳之光,明亮,光大,美好。
组合字: 溍秧倡唱菖娼昙阊猖 鲳??
: 昌言:人性以光大为美,是为美好之言。
: 昌盛:光大的程度高盛。
昌隆:光大的程度兴隆。
:
:
:
:
:
:
:
该字典内容公开. 可到 http://www.cbflabs.com 下载. 如果你下载中蟒则已包括该字典.
一般来说中蟒写的程式都很容易明白, 基本上不要解释. 但因为这个字典在大五及国标环境下都可运作, 然而两种编码同时操作很容易把人弄糊涂, 所以要特别说明一下:
基因字典本身是大五码的, 所以读进来的字都是大五编码的字. (注意字串的编码记号是和即译器的目前编码一致的, 因此和文本实际的编码不一定吻合)
即译器运行在国标编码下的话, 用户输入的查询字应为国标码, 所以要先检查是否需要转换.
在显示文字上, 因为中蟒在写字串时会检查目前编码和字串的编码作自动转换, 所以不必操心. 那些使户讯息如 "只能查询单字" 什么的就要处理一下. 用 '强设编码("大五")' 这个函数为每个要输出的讯息设好编即成.
三引号的用法在新版 2.1.3-0.4 中已取消. 那些使户讯息如 "只能查询单字" 什么的就要处理一下. 有两个方法, 第一个是用强设编码的方法指定该字串的编码, 另一个方法就是用三个引号把它们包起来, 三引号在 python 中经常用来作说明文件用, 在中蟒的情况下被三引号包住的字串会自动做编码转换. 这样就省去了许多手续.
注意! 普通字串中一般会设为中蟒启动时的编码设定, 这是因为要方便处理二进位的资料流. 不问三七二十一都转换编码会弄的一团糟.