陕西住建厅网站官网,河南中英网站建设,wordpress升级后打不开,wordpress rss插件本文实例讲述了Python实现针对中文排序的方法。分享给大家供大家参考#xff0c;具体如下#xff1a;Python比较字符串大小时#xff0c;根据的是ord函数得到的编码值。基于它的排序函数sort可以很容易为数字和英文字母排序#xff0c;因为它们在编码表中就是顺序排列的。但…本文实例讲述了Python实现针对中文排序的方法。分享给大家供大家参考具体如下Python比较字符串大小时根据的是ord函数得到的编码值。基于它的排序函数sort可以很容易为数字和英文字母排序因为它们在编码表中就是顺序排列的。但要很处理中文就没那么容易了。中文通常有拼音和笔画两种排序方式在最常用中文标准字符集GB2312中3755个一级中文汉字是按照拼音序进行编码的而3008个二级汉字则是按部首笔画排列出现这样的结果是因为‘曙和‘曾都是常用字而‘鲑和‘怡都是次常用字但无论从笔画还是拼音来看这两对顺序都应该反过来。后来扩充的GBK和GB18030编码为了向下兼容都没有更改之前的汉字顺序于是sort之后的次序就很乱了。另一方面unicode编码的中文是按《康熙字典》的偏旁部首和笔画数来排列的所以排序结果和GB编码又不一样。输出是佘孙李赵钱而保存成gb2312编码后输出是“李钱孙赵佘”。显然这两个结果都不是我们想要的。那我们究竟怎样才能对中文正确排序呢先要弄清楚中文词典的排序规则先按拼音排列区分四声拼音相同的就看笔画数目多少笔画数也相同的再按笔顺中的具体笔划类型来区分新华字典采用的顺序是一丨丿丶乙也称作“天上人间”应该没有笔划类型也完全一样的。所以中文排序不仅需要带音调的汉字拼音对照表还需要有具体笔顺的数据。本以为有现成的模块试了几个都不理想。pyzh的转换代码只支持不到7千字而且还没有音调。水木的roy的代码涵盖了2万多字符但需要pysqlite支持......还是自立更生吧我找到最全的数据是slowwind9999上传到csdn的unicode汉字编码表(点击此处本站下载。)包括全部20902个汉字的全拼、五笔、郑码、UNICODE、GBK、笔画数 部首以及笔顺编号(拼音部分没有音调而且个别注音有误如 囍猤啹等字使用需注意。)我提取了其中的笔顺数据又用江志键的“实用汉字转拼音”程序制作了unicode汉字音调版其中中文汉字用四声标注319个日韩汉字没有音调以示区别并根据汉典的数据略作修正(但仍可能存在错误)。有了这两个对照表下面的工作就简单了。笔顺字典的处理方法也完全相同虽然文本有两万行导入还是很快的0.5秒左右。如果把这两个文件合并起来统一处理应该可以更快。查找中文一律转为UTF8字符串汉字外的其他字符不做处理原样输出。如果需要声母只输出拼音的第一个字符就是了。只要资料准确比较起来就很轻松了。数字在字母之前爱(ai4)便会比昂(ang2)靠前而笔顺值的位数代表了笔画数数值对应笔划权重直接比较数字大小就可以得到正确的顺序。代码如下现在我们就可以按照字典的规范给中文排序了。终于得到了“李钱佘孙赵”示例文件点此下载。这里我没有考虑多音字的情况。如果想让程序自动识别可以增加多音词组对照表通过上下文来判断。我不知道哪里有这样的数据反正对于多音字不太多的情形手动调整也就够了。希望本文所述对大家Python程序设计有所帮助。