Python 对中文排序除了对照表还有没有其他好的实现?

2014-07-20 17:21:59 +08:00
 decken
6061 次点击
所在节点    Python
7 条回复
hahastudio
2014-07-20 18:00:22 +08:00
我觉得对中文没有好方法= =
最好的方法就是查表= =

编码里面是个坑,GB2312里
16-55区为一级汉字,按拼音排序。
56-87区为二级汉字,按部首/笔画排序。
utf-8里面没有对中文字符的有意义的顺序

语言方面,如果是拼音顺序
那么多音字也是个坑,这你不查表真没辙

总之,别纠结,查表= =
qian
2014-07-20 19:37:26 +08:00
是说这个吗... 仅日常使用... 程序员的需求我不懂

https://gist.github.com/lsfalimis/690e6ddb4f04ecdbf685



https://github.com/fxsjy/jieba
sudo pip install jieba

https://github.com/mozillazg/python-pinyin
sudo pip install pypinyin
imn1
2014-07-20 19:40:46 +08:00
utf-8基本是按偏旁排序的,后加的生僻字例外
拼音只能查表,现成的unicode-pinyin表开源站上有
Quaintjade
2014-07-20 20:14:17 +08:00
utf-8按偏旁排列,不过中日汉字放一起的,GBK映射过去不连续
xiaket
2014-07-21 08:57:13 +08:00
一般应用而言, 只是要比较两个字的拼音谁先谁后, 而不用解出具体拼音是什么的话, 直接转到GB18030后用大于小于比较就行了.

>>> s1 = "佛祖"
>>> s2 = "上帝"
>>> s1 > s2
True
>>> s1.decode("UTF8").encode("GB18030") > s2.decode("UTF8").encode("GB18030")
xiaket
2014-07-21 08:57:45 +08:00
上一条漏贴了一个结尾的False, sorry.
bmxbmx3
2021-03-07 15:26:27 +08:00
pypi 有个 cn_sort 库应该能帮到你(小声 bb,我写的,求个 star )

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/123586

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX