美文网首页
对鼠须管词库进行简单排序

对鼠须管词库进行简单排序

作者: 十一岁的加重 | 来源:发表于2018-02-12 14:24 被阅读25次

在输入汉字时,会从这个文件 wubi86.dict.yaml中读取可输入的汉字以及自动造词生成的汉字,所以这个文件里的内容如果过多会影响输入效率,并且有些繁体字或者生僻字平时我们根本用不到,与其让其拖慢我们输入效率还不如写写代码排序,因为之前我已经把其中一些繁体字和者生僻字去除了,所以这次的需求是,降序排序,过一过里面输入次数较少的词。

image.png

直接上代码吧
oc版本


#import <Foundation/Foundation.h>
@interface LineObj :NSObject
@property (copy, nonatomic) NSString *outputValue;
@property (copy, nonatomic) NSString *outputKey;
@property(nonatomic, assign) NSUInteger inputNum;
@property (copy, nonatomic) NSString *otherOutputKey;
@property (copy, nonatomic) NSString *line;
@end
@implementation LineObj
- (NSString *)line {
    if (self.otherOutputKey && self.otherOutputKey.length) {
        
        return [NSString stringWithFormat:@"%@\t%@\t%tu\t%@\n", self.outputValue, self.outputKey,self.inputNum, self.otherOutputKey];
    }
    return [NSString stringWithFormat:@"%@\t%@\t%tu\n", self.outputValue, self.outputKey,self.inputNum];
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        
        NSError *encodeStringError ;
        unsigned long encode = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingUTF8);
        NSString *thesaurusFilePath = @"/Users/mac/Desktop/wubi86.dict.yaml";
        NSString *content = [NSString stringWithContentsOfFile:thesaurusFilePath encoding:encode error:&encodeStringError];
        if (encodeStringError) {
            
            NSLog(@"%@",encodeStringError);
        }
        
        NSData *thesaurusData = [content dataUsingEncoding:NSUTF8StringEncoding];
        NSString *thesaurusString = [[NSString alloc] initWithData:thesaurusData encoding:NSUTF8StringEncoding];
        NSArray<NSString *> *lineStrings = [thesaurusString componentsSeparatedByString:@"\n"];
        NSMutableArray *lineObjs = [NSMutableArray array];
        
        for (NSString *lineString in lineStrings) {
            
            NSArray<NSString *> *lineValues = [lineString componentsSeparatedByString:@"\t"];
            
            if (lineValues.count >= 3) {
            
                LineObj *lineObj = [[LineObj alloc] init];
                lineObj.outputValue = lineValues[0];
                lineObj.outputKey  = lineValues[1] ;
                lineObj.inputNum = [lineValues[2] integerValue];
                
                if (lineValues.count == 4) {
                    lineObj.otherOutputKey = lineValues[3];
                }
                
                [lineObjs addObject:lineObj];
            }
        }
        
        NSSortDescriptor *destor = [NSSortDescriptor sortDescriptorWithKey:@"inputNum" ascending:YES];
        lineObjs = [[lineObjs sortedArrayUsingDescriptors:@[destor]] mutableCopy];
        NSMutableString *outputMuString = [NSMutableString string];
        
        for (LineObj *obj in lineObjs) {
            [outputMuString appendString:obj.line];
        }
        
        NSLog(@"----%@---", outputMuString);
    }
    return 0;
}

然后 我看到了自己经常输入的不是词语,而是这些字


image.png

那么问题就来了,还是得注意,多打词语才能提升五笔的速度。

python版本

import operator
class LineObj(object):
    def __init__(self, outputValue, outputKey, outputNum, outputOtherKey=None):
        self.outputValue = outputValue
        self.outputKey = outputKey
        self.outputNum = int(outputNum)
        if outputOtherKey is not None:
            self.outputOtherKey = outputOtherKey
        else:
            self.outputOtherKey = ''

lineObjs = []
with open('wubi86.dict.yaml', 'rt') as f:
    for line in f:
        words = line.split('\t')
        if len(words) == 3:
            lineObj = LineObj(words[0], words[1], words[2])
            lineObjs.append(lineObj)
        elif len(words) == 4:
            lineObj = LineObj(words[0], words[1], words[2], words[3])
            lineObjs.append(lineObj)
cmpfun = operator.attrgetter('outputNum')
lineObjs.sort(key = cmpfun)
for lineObj in lineObjs:
    print lineObj.outputValue + '\t' + lineObj.outputKey + '\t' + str(lineObj.outputNum) + '\t' + lineObj.outputOtherKey

可见已排好序


image.png

相关文章

  • 对鼠须管词库进行简单排序

    在输入汉字时,会从这个文件 wubi86.dict.yaml中读取可输入的汉字以及自动造词生成的汉字,所以这个文件...

  • Mac 鼠须管词库手动合并

    一、打开配置文件所在位置 二、从公司和家里或者从你的windows电脑上把同步文件放到这个文件里 三、点击同步用户...

  • Mac OS 鼠须管粤拼输入法配置方法

    0.安装鼠须管(未安装鼠须管的用户需要先安装鼠须管) 1.下载 rime-schema-jyutping rime...

  • Mac鼠须管挂接小鹤双拼

    Rime号称神级输入法,其MacOs下分支称为鼠须管Squirrel。来试试吧 下载鼠须管,前往Rime官网 挂接...

  • 重装鼠须管2019版本

    今天做了多余的事情,调了鼠须管配置参数,怪事发生了:无法启用双拼输入。这才发现鼠须管2019版本大调整。官方iss...

  • Rime输入法—鼠须管(Squirrel)词库添加及配置

    为什么用Rime 13年底的时候,日本爆出百度的日本版本输入法的问题,要求政府人员停用,没当回事,反正我没用,当然...

  • 鼠须管输入法 for Mac v0.13.0官方版

    鼠须管输入法是一个神奇并且优秀的输入法,拥有几乎全平台,非常多的可选方案以及完全开源等优势。鼠须管输入法基于 RI...

  • 鼠须管输入法 for Mac,画风清奇的输入法软件~~

    鼠须管输入法 for Mac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法 mac版不仅仅...

  • 排序算法

    常见排序算法及JAVA实现 简单选择排序(SelectSort) 选择排序思想很简单,对所有元素进行遍历,选出最小...

  • 折腾重装安装鼠须管

    更新:最新格盘重装系统了,发现编译不了了,好在之前编译成包,还有最新的配置文件包放这里/Library/Input...

网友评论

      本文标题:对鼠须管词库进行简单排序

      本文链接:https://www.haomeiwen.com/subject/lkwrtftx.html