python汉字排序_【IT专家】Python中文排序(转载)

本文由我司收集整编,推荐下载,如有疑问,请与我司联系

Python

中文排序(转载)

2012/02/02

3793

Python

比较字符串大小时,根据的是

ord

函数得到的编码

值。基于它的排序函数

sort

可以很容易为数字和英文字母排序,因为它们在编码表

中就是顺序排列的。

但要很处理中文就没那么容易了。中文通常有拼音和笔画两种排序方式,在最常

用中文标准字符集

GB2312

中,

3755

个一级中文汉字是按照拼音序进行编码的,而

3008

个二级汉字则是按部首笔画排列,

出现这样的结果是因为‘曙’和‘曾’都是常用字,而‘鲑’和‘怡’都是次

常用字,但无论从笔画还是拼音来看,这两对顺序都应该反过来。后来扩充的

GBK

GB18030

编码为了向下兼容,都没有更改之前的汉字顺序,于是

sort

之后的次序

就很乱了。另一方面

unicode

编码的中文是按《康熙字典》的偏旁部首和笔画数来

排列的,因此排序结果和

GB

编码又不一样。

12345 # encoding=utf8char=[‘

’,’

’,’

’,’

’,’

’]char.sort()for item in char: print

item.decode(‘utf-8’).encode(‘gb2312’)

12345

#

encoding=gb2312char=[‘

’,’

’,’

’,’

’,’

’]char.sort()for

item

in

char:

print

item

输出是:

李钱孙赵佘

。显然,这两个

结果都不是我们想要的。那我们究竟怎样才能对中文正确排序呢?

先要弄清楚中文词典的排序规则:先按拼音排列,区分四声,拼音相同的就看笔

画数目多少,笔画数也相同的再按笔顺中的具体笔划类型来区分,新华字典采用的

顺序是一丨丿丶乙,也称作

天上人间

,应该没有笔划类型也完全一样的。因此中

文排序不仅需要带音调的汉字拼音对照表,还需要有具体笔顺的数据。

本以为有现成的模块,试了几个都不理想。

pyzh

的转换代码只支持不到

7

字,而且还没有音调。水木的

roy

的代码涵盖了

2

万多字符,但需要

pysqlite

......

还是自立更生吧~

我找到最全的数据是

slowwind9999

上传到

csdn

unicode

汉字编码表,包括全

20902

个汉字的全拼、五笔、郑码、

UNICODE

GBK

、笔画数

部首,以及笔顺

编号(拼音部分没有音调,而且个别注音有误,如

囍,猤,啹等字,使用需注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值