字符(unicode)转拼音声调数字

来源:互联网 发布:python与php的区别 编辑:程序博客网 时间:2024/04/28 05:32

根据网上拼音数字转字符资料整理下反向转换。需注意的是,这里的处理类型为string,若为unicode类型需要进行.encode('utf-8')转换

#encoding:utf-8# map (final) constanant+tone to tone+constananmapConstTone2ToneConst = {'n1':  '1n',                          'n2':  '2n',                          'n3':  '3n',                          'n4':  '4n',                          'ng1': '1ng',                          'ng2': '2ng',                          'ng3': '3ng',                          'ng4': '4ng',                          'r1':  '1r',                          'r2':  '2r',                          'r3':  '3r',                          'r4':  '4r'}# map vowel+vowel+tone to vowel+tone+vowelmapVowelVowelTone2VowelToneVowel = {'ai1': 'a1i',                                    'ai2': 'a2i',                                    'ai3': 'a3i',                                    'ai4': 'a4i',                                    'ao1': 'a1o',                                    'ao2': 'a2o',                                    'ao3': 'a3o',                                    'ao4': 'a4o',                                    'ei1': 'e1i',                                    'ei2': 'e2i',                                    'ei3': 'e3i',                                    'ei4': 'e4i',                                    'ou1': 'o1u',                                    'ou2': 'o2u',                                    'ou3': 'o3u',                                    'ou4': 'o4u'}# map vowel-number combination to unicodemapVowelTone2Unicode = {'a1': 'ā',                        'a2': 'á',                        'a3': 'ǎ',                        'a4': 'à',                        'e1': 'ē',                        'e2': 'é',                        'e3': 'ě',                        'e4': 'è',                        'i1': 'ī',                        'i2': 'í',                        'i3': 'ǐ',                        'i4': 'ì',                        'o1': 'ō',                        'o2': 'ó',                        'o3': 'ǒ',                        'o4': 'ò',                        'u1': 'ū',                        'u2': 'ú',                        'u3': 'ǔ',                        'u4': 'ù',                        'v1': 'ǜ',                        'v2': 'ǘ',                        'v3': 'ǚ',                        'v4': 'ǜ',                       }def ConvertToneNumbersPinyin(lineIn):    assert type(lineIn) is str    lineOut = lineIn    # mapVowelTone2Unicode    for x, y in mapVowelTone2Unicode.items():      lineOut = lineOut.replace(y, x).replace(y.upper(), x.upper())    # mapVowelVowelTone2VowelToneVowel    for x, y in mapVowelVowelTone2VowelToneVowel.items():      lineOut = lineOut.replace(y, x).replace(y.upper(), x.upper())    # first transform    for x, y in mapConstTone2ToneConst.items():      lineOut = lineOut.replace(y, x).replace(y.upper(), x.upper())    return lineOut.replace('Ü', 'V').replace('ü', 'v')if __name__ == '__main__':  lineIn = "Chén Chǔ"  lineOut = ConvertToneNumbersPinyin(lineIn)  print lineOut


***********************************************************************************************************************************************

***********************************************************************************************************************************************

test.py 用例

#encoding:utf-8import refrom tone2Pinyin import ConvertToneNumbersPinyinargs = "Zhào Qián Sūn Lǐ Zhōu Wú Zhèng Wáng"# lineOut = ConvertToneNumbersPinyin(args)# print lineOuts = u"""Zhào Qián Sūn Lǐ Zhōu Wú Zhèng Wáng赵 钱 孙 李 周 吴 郑 王Féng Chén Chǔ Wèi Jiǎng Shěn Hán Yáng冯 陈 褚 卫 蒋 沈 韩 杨Zhū Qin Yoú Xǔ Hé Lǚ Shi Zhāng朱 秦 尤 许 何 吕 施 张"""def convert_to_pinyin_num():    pattern = re.compile(u"[\u4e00-\u9fa5]+")    for param in s.split():        match = pattern.match(param)        if not match:            param = param.encode("utf-8")            lineOut = ConvertToneNumbersPinyin(param)            print lineOutconvert_to_pinyin_num()
输出数据:
Zhao4
Qian2
Sun1
Li3
Zhou1
Wu2
Zheng4
Wang2
Feng2
Chen2
Chu3
Wei4
Jiang3
Shen3
Han2
Yang2
Zhu1
Qin
You2
Xu3
He2
Lü3
Shi
Zhang1



0 0
原创粉丝点击