Python实例(1)- 中文转拼音

最近编写一个脚本,首先要打印出众多平台名,但随着平台越来越多,直接显出来得有点乱,想通过按平台第一个字的字母分类再打印,但有些平台是汉字名字,这就需要先通过汉字获取到拼音。
  综合参考网上的方法,发现大多都是通过gbk编号对应拼音,这种方式算法麻烦不说,并且不支持utf-8编码。如果有一个字库,具有所有中文对应拼音(常用汉字才1万多,所以速度方面不会有多大影响),那么就可以通过汉字返回所需要的拼音字母。在网上搜索的时候找到了一个字库(https://github.com/haiwen/seahub/blob/master/seahub/convert-utf-8.txt).

  如图。比如‘李’字,‘李li3’表示汉字‘李’,拼音为‘li’,音调是3(这里只需要拼音)。具体实现如下:

    def convert(ch):
        """该函数通过输入汉字返回其拼音,如果输入多个汉字,则返回第一个汉字拼音.
           如果输入数字字符串,或者输入英文字母,则返回其本身(英文字母如果为大写,转化为小写)
        """
        length = len('柯') #测试汉字占用字节数,utf-8,汉字占用3字节.bg2312,汉字占用2字节
        intord = ord(ch[0:1])
        if (intord >= 48 and intord <= 57):
            return ch[0:1]
        if (intord >= 65 and intord <=90 ) or (intord >= 97 and intord <=122):
            return ch[0:1].lower()
        ch = ch[0:length] #多个汉字只获取第一个
        with open(r'./conf/convert-utf-8.txt') as f:
            for line in f:
                if ch in line:
                    return line[length:len(line)-2]

  函数结果如下:

>>> convert('杰')
'jie'
>>> convert('1')
'1'
>>> convert('a')
'a'
>>> convert('B')
'b'
>>> convert('广州')
'guang'
>>> convert('汉')
'han'

用len函数获取汉字占用字符数是为了同时在linux与windows下保持兼容。

你可能感兴趣的:(Python)