fmddlmyy吧 关注:119贴子:3,012
  • 8回复贴,共1

利用cnbook和excel处理码表(一)

只看楼主收藏回复

可以利用cnbook和excel相互配合,来处理码表。
excel可以分列、排序、做特殊标记、运算等。
cnbook可以存贮数据,正则表达式,自定义替换表可以进行数据相减操作,做特殊标记等。
cnbook自定义替换表,分为2种。一种是正则替换,功能强,速度慢;另一种是转义符替换,速度快。
有些文本编辑器功能强大,包含cnbook和excel部分功能,其处理速度可能不如cnbook。
利用cnbook和excel,处理码表的步骤如下,可能不很简洁。
1、假设码表无容错码。即全码只有一个,简码是其前面的部分。
2、假设码表已按先编码后字频排序。如果未排序,可以从网上找综合字频,做成自定义替换表。给每个汉字配上一个字频列,然后在excel中,按照先编码后字频排序即可。
自定义替换表综合字频_21003:
格式如下:
的=的 1
一=一 2
是=是 3
在excel中:主键字编码列,次主键字频列,升序


1楼2014-06-29 12:56回复
    3、使用正则,把码表变成下面形式:
    工a
    戒aa
    工aaa
    工aaaa
    存入——1234_mabiao.txt——替换表综合字频_21003——正则^(\c) (\d+)(\a+)$=\1\t\3\t\2——存入1234_mabiao_1.txt
    如果不想使用字频,改变原码表顺序,可以使用cnbook中自定义替换表,进行码表相减操作,把原码表中的各码长字进行分类,从1级简码到4级全码,由低到高,先确定低码长字,再利用自定义替换表进行码表相减操作,再确定高码长字。最重要的确定首位唯一码,其次是重码字,最后是后置全码。过程可能有点繁琐,见利用cnbook和excel处理码表(二)。


    2楼2014-06-29 12:58
    回复
      4、首先确定首位唯一码:
      在excel中,按先汉字列后编码列,升序,给汉字列标记重码序号。
      数据如下:
      A B C D
      工 a 202 1
      戒 aa 1585 =if(a1=a2,d1+1,1)
      工 aaa 202
      工 aaaa 202 向下填充
      戒 aak 1585
      选中abcd列,复制,粘贴数值。
      按重码D列,升序,删除重码行。
      按先编码列后字频列,升序,给编码列标记重码序号。
      数据如下:
      A B C D
      工 a 202 1
      戒 aa 1585 =if(b1=b2,d1+1,1)
      工 aaa 202
      工 aaaa 202 向下填充
      戒 aak 1585
      选中abcd列,复制,粘贴数值。
      按重码D列,升序,删除重码行。


      3楼2014-06-29 13:02
      收起回复
        5、首位唯一码字:
        在cnbook中,正则^(\c)\t(\a+).+$=\1\2——存入首位唯一码字1234_shouwei.txt
        在1234_shouwei.txt中,做成自定义处理表1234_shouwei_2:
        格式如下:
        工a =¥工a
        戒aa =¥戒aa
        葚aad =¥葚aad
        ——做成自定义替换表1234_shouwei_1
        格式如下:
        工=¥工
        戒=¥戒
        葚=¥葚


        4楼2014-06-29 13:06
        回复
          6、重码字和后置全码:
          在码表1234_mabiao.txt中,正则$=空格——自定义替换1234_shouwei_2——正则^¥.+$=\d——替换表综合字频_21003——正则^(\c) (\d+)(\a+) $=\1\t\3\t\2
          在excel中,按先汉字列后编码列,降序,给汉字列标记重码序号。
          数据如下:
          A B C D
          工 a 202 1
          戒 aa 1585 =if(a1=a2,d1+1,1)
          工 aaa 202
          工 aaaa 202 向下填充
          戒 aak 1585
          选中abcd列,复制,粘贴数值。
          按重码D列,升序,删除重码行。


          5楼2014-06-29 13:13
          回复
            按先编码列后字频列,升序。
            数据如下:
            A B C D
            工 a 202 1
            戒 aa 1585 1
            工 aaa 202 1
            工 aaaa 202 1
            戒 aak 1585 1
            在cnbook中,正则^(\c)\t(\a+).+$=\1\2——存入1234_houzhi.txt
            在1234_houzhi.txt中,自定义替换1234_shouwei_1:
            正则^¥.+$=\d——存入重码字1234_congma.txt
            不匹配^¥.+$=\d——正则¥=空——存入后置全码字123_houzhi.txt
            7、重新合成码表:
            把首位唯一码字1234_shouwei.txt,重码字1234_congma.txt,后置全码字123_houzhi.txt合起来。
            在excel中,分列,按编码列排序。
            在cnbook中,正则\t=空——存入1234_mabiao_2.txt
            由以上可以看出,不管是首位唯一码,或重码字,或后置全码,都需要在cnbook和excel中来回操作,相互配合。借用excel按列排序、标记、运算等功能。借用cnbook的快速存贮、正则表达式、自定义替换等功能。可以说二者相互配合才能完成操作。


            6楼2014-06-29 13:18
            回复
              高手。


              IP属地:山东7楼2014-06-30 18:00
              收起回复