fmddlmyy吧 关注:120贴子:3,018
  • 7回复贴,共1

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

只看楼主收藏回复

利用cnbook和excel相互配合,来处理码表,其中利用了字频进行排序等操作,从而改变了原码表顺序。
如果不想使用字频,改变原码表顺序,只利用excel的分列排序功能进行排序。可以使用cnbook中自定义替换表,进行码表相减操作。
把原码表中的各码长字进行分类,从1级简码到4级全码,由低到高,先确定低码长字,再利用自定义替换表进行码表相减操作,再确定高码长字。
最重要的确定首位唯一码,其次是重码字,最后是后置全码。


1楼2014-06-29 17:53回复
    利用cnbook和excel,处理码表的步骤如下,可能不很简洁。
    1、假设码表无容错码。即全码只有一个,简码是其前面的部分。
    2、假设码表已按先编码后字频排序。
    3、使用正则,把码表变成下面形式:
    工a
    戒aa
    工aaa
    工aaaa
    存入——1234_mabiao.txt
    在excel中,把1234_mabiao.txt分列,按编码列排序。
    在cnbook中,正则\t=空——存入1234_mabiao_1.txt


    2楼2014-06-29 17:55
    回复
      4、首先确定首位唯一码:
      把原码表中的各码长字进行分类,先确定低码长字,再利用自定义替换表进行码表相减操作,再确定高码长字。
      在1234_mabiao.txt_1中:
      ^\c\a\a\a\a$——存入4.txt
      ^\c\a\a\a$——存入3.txt
      ^\c\a\a$——存入2.txt
      ^\c\a$——存入1.txt
      在1.txt中,自定义替换取首位——存入1_1.txt
      自定义替换表,取首位:
      格式如下:
      $= ¥\d
      (\c(\a+ ))(¥\c\2)+=\1
      空格¥=\n


      3楼2014-06-29 17:58
      回复
        在1_1.txt中,正则^(\c)(\a+)$=\1=¥\1——做成自定义替换表01_1
        自定义替换表01_1:
        格式如下:
        工=¥工
        了=¥了
        以=¥以
        在2.txt中,自定义替换01_1——正则^¥.+$=\d——自定义替换取首位——存入2_1.txt——做成自定义替换表02_1,方法同替换表01_1
        在3.txt中,自定义替换01_1——自定义替换02_1——正则^¥.+$=\d——自定义替换取首位——存入3_1.txt——做成自定义替换表03_1,方法同替换表01_1
        在4.txt中,自定义替换01_1——自定义替换02_1——自定义替换03_1——正则^¥.+$=\d——自定义替换取首位——存入4_1.txt


        4楼2014-06-29 18:01
        回复
          5、首位唯一码字:
          把1_1.txt,2_1.txt,3_1.txt,4_1.txt合起来:
          在excel中,分列,按编码列排序。
          在cnbook中,正则\t=空——存入首位唯一码字1234_shouwei.txt
          在1234_shouwei.txt中,做成自定义处理表1234_shouwei_2:
          格式如下:
          工a =¥工a
          戒aa =¥戒aa
          葚aad =¥葚aad
          ——做成自定义替换表1234_shouwei_1:
          格式如下:
          工=¥工
          戒=¥戒
          葚=¥葚


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


            6楼2014-06-29 18:09
            回复
              按先编码列后序号列,升序。
              数据如下:
              A B C D
              工 a 1 1
              戒 aa 2 1
              工 aaa 3 1
              工 aaaa 4 1
              戒 aak 5 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的快速存贮、正则表达式、自定义替换等功能。可以说二者相互配合才能完成操作。


              7楼2014-06-29 18:11
              回复
                有意思


                IP属地:江苏来自Android客户端8楼2015-12-02 18:05
                回复