Python论坛  - 讨论区

标题:[python-chinese] Python中文拼音排序的支持

2007年07月26日 星期四 12:07

Hong Yuan hongyuan在homemaster.cn
星期四 七月 26 12:07:47 HKT 2007

前几天列表中讨论过这个话题,最近自己研究了一下,和大家分享一下,请大家补充。

另外有谁知道如何在Windows下添加locale的,请给个提示。


  Python拼音排序的支持

Python内置的字符串比较并未考虑locale信息,其标准库locale库也没有提供能按 
拼音排序的LC_COLLATE,排序完全交给操作系统的locale完成。有一些项目提供了 
不完全的拼音支持,如ZopeChinaPak中提供了GB2312编码到拼音的转换,可以以此 
为基础写一个比较函数。

比较好的方法是通过locale,由于没有标准的支持中文排序的locale,有人自己编 
写了一个locale-pinyin(http://www.cublog.cn/u/8057/showart_245534.html), 
能够实现这个功能,目前据说已经整合进了标准的glibc库。下载地址是:

https://gro.clinux.org/frs/download.php/1962/locale-pinyin-0.1.tar.gz

不过这个locale只能在Linux下编译,不知道如何在Windows下使用。以下为Linux 
下使用的例子:

   1.

      解开locale-pinyin安装包,运行make,然后make install

   2.

      运行以下测试程序,可以看到其效果:

      # -*- coding: utf-8 -*-

      import locale
      a, b = u'小学'
      print a < b
      print locale.strcoll(a, b)
      locale.setlocale(locale.LC_COLLATE, 'zh_CN在pinyin.utf8')
      print a < b
      print locale.strcoll(a, b)
          

可见即使strcoll可以正确使用拼音进行比较,标准的字符串比较和排序函数并不 
能从中得益,需要自己写比较函数。

-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070726/cd3f5acd/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年07月26日 星期四 12:26

Zoom.Quiet zoom.quiet在gmail.com
星期四 七月 26 12:26:53 HKT 2007

On 7/26/07, Hong Yuan <hongyuan在homemaster.cn> wrote:
> 前几天列表中讨论过这个话题,最近自己研究了一下,和大家分享一下,请大家补充。
>
>  另外有谁知道如何在Windows下添加locale的,请给个提示。
>
> Python拼音排序的支持
Great ! 先收录在 :
http://202.108.44.62/moin/MicroProj/2007-07-26
慢慢品味,改进
>
> Python内置的字符串比较并未考虑locale信息,其标准库locale库也没有提供能按拼音排序的LC_COLLATE,排序完全交给操作
> 系统的locale完成。有一些项目提供了不完全的拼音支持,如ZopeChinaPak中提供了GB2312编码到拼音的转换,可以以此为基础写一个比
> 较函数。
>
> 比较好的方法是通过locale,由于没有标准的支持中文排序的locale,有人自己编写了一个locale-pinyin(http://www.cublog.cn/u/8057/showart_245534.html),
> 能够实现这个功能,目前据说已经整合进了标准的glibc库。下载地址是:
>
> https://gro.clinux.org/frs/download.php/1962/locale-pinyin-0.1.tar.gz
>
> 不过这个locale只能在Linux下编译,不知道如何在Windows下使用。以下为Linux下使用的例子:
>
>
>
> 解开locale-pinyin安装包,运行make,然后make install
>
>
> 运行以下测试程序,可以看到其效果: # -*- coding: utf-8 -*-
>
> import locale
> a, b = u'小学'
> print a < b
> print locale.strcoll(a, b)
> locale.setlocale(locale.LC_COLLATE, 'zh_CN在pinyin.utf8')
> print a < b
> print locale.strcoll(a, b)
>
>
>
> 可见即使strcoll可以正确使用拼音进行比较,标准的字符串比较和排序函数并不能从中得益,需要自己写比较函数。
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request在lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>


-- 
'''Time is unimportant, only life important!
过程改进的目标不是高品质产品,而是促生靠谱的人的组织!
'''
http://zoomquiet.org
blog在http://blog.zoomquiet.org/pyblosxom/
wiki在http://wiki.woodpecker.org.cn/moin/ZoomQuiet
or http://202.108.44.62/moin/ZoomQuiet
scrap在http://floss.zoomquiet.org
douban在http://www.douban.com/people/zoomq/
____________________________________
Pls. use OpenOffice.org to replace M$ Office.
     http://zh.openoffice.org
Pls. use 7-zip to replace WinRAR/WinZip.
     http://7-zip.org/zh-cn/
You can get the truely Freedom 4 software.

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号