Python汉字转换成拼音

最近在使用Python做项目时,需要将汉字转化成对应的拼音.在Github上找到了一个现成的程序.

Python汉字转拼音

使用实例如下:

from pinyin import PinYin

test = PinYin()
test.load_word()
print test.hanzi2pinyin(string=‘钓鱼岛是中国的‘)
print test.hanzi2pinyin_split(string=‘钓鱼岛是中国的‘, split="-")

输出:

[‘diao‘, ‘yu‘, ‘dao‘, ‘shi‘, ‘zhong‘, ‘guo‘, ‘de‘]
‘diao-yu-dao-shi-zhong-guo-de‘

其中hanzi2pinyin函数返回值是一个列表,而hanzi2pinyin_split函数在split参数为空时返回列表,不为空是返回字符串.

但程序存在两个问题,第一是当中文中夹带英文时,英文会丢失.第二则是hanzi2pinyin_split的返回值一会是列表,一会是字符串,让人比较迷糊.

例如:

test.hanzi2pinyin_split(string=‘钓鱼岛是中国的code123‘, split="")

我们期待的结果是:

u‘diaoyudaoshizhongguodecode123‘

但实际结果为:

u‘diaoyudaoshizhongguode‘

为此,在原来的程序中做了如下改写.

1.hanzi2pinyin函数修改

原来的hanzi2pinyin函数:

def hanzi2pinyin(self, string=""):
    result = []
    if not isinstance(string, unicode):
        string = string.decode("utf-8")

    for char in string:
        key = ‘%X‘ % ord(char)
        result.append(self.word_dict.get(key, char).split()[0][:-1].lower())

    return result

修改后的hanzi2pinyin函数:

def hanzi2pinyin(self, string=""):
    result = []
    if not isinstance(string, unicode):
        string = string.decode("utf-8")

    for char in string:
        key = ‘%X‘ % ord(char)
        if not self.word_dict.get(key):
            result.append(char)
        else:
            result.append(self.word_dict.get(key, char).split()[0][:-1].lower())

    return result

修改后的hanzi2pinyin函数可以避免中英文混合的情况下,英文丢失.

2.hanzi2pinyin_split函数修改,将返回值为统一为字符串

原来的hanzi2pinyin_split函数:

def hanzi2pinyin_split(self, string="", split=""):
    result = self.hanzi2pinyin(string=string)
    if split == "":
        return result
    else:
        return split.join(result)

修改后的hanzi2pinyin_split函数(不论split参数是否为空,hanzi2pinyin_split均返回字符串):

def hanzi2pinyin_split(self, string="", split=""):
    result = self.hanzi2pinyin(string=string)
    #if split == "":
    #    return result
    #else:
    return split.join(result)
时间: 2024-10-27 02:33:36

Python汉字转换成拼音的相关文章

python把汉字转换成拼音实现程序

python把汉字转换成拼音实现程序 文章一个简洁干的汉字转拼音 程序,复制下载就可以直接使用,有需要的同学可以参考一下下. #coding:utf-8 #基于python2.6 table = 'a,-20319;ai,-20317;an,-20304;ang,-20295;ao,-20292;ba,-20283;bai,-20265;ban,-20257;bang,-20242;bao,-20230;bei,-20051;ben,-20036;beng,-20032;bi,-20026;bi

基于jQuery实现汉字转换成拼音代码

基于jQuery实现汉字转换成拼音代码.这是一款基于jQuery.Hz2Py.js插件实现的汉字转拼音特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: <br /> <br /> <br /> <br /> <br /> <center> 在这里输入汉字<br /> <textarea id="content"> </textarea><br /&g

php 将汉字转换成拼音的方法封装成工具包

php 将汉字转换成拼音的方法封装成工具包,代码如下: <?php class PinyinTool { private static $pylist = array( 'a'=>-20319,'ai'=>-20317,'an'=>-20304,'ang'=>-20295,'ao'=>-20292, 'ba'=>-20283,'bai'=>-20265,'ban'=>-20257,'bang'=>-20242,'bao'=>-20230,'

java把汉字转换成拼音

汉字转换成拼音工具类: 1 import net.sourceforge.pinyin4j.PinyinHelper; 2 import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; 3 import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; 4 import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;

几个将汉字转换成拼音的在线工具

编程时,经常遇到由于汉字兼容性差带来的困扰.解决的方法之一就是使用汉语拼音来代替汉字,(使用英语翻译比较费时).将汉语转换成拼音的方法有很多,可以通过编程实现,比如借助于pinyin package,也可以使用现在工具,直接将汉语转化为拼音.需要注意的是,在汉字转化成拼音时,需要注意尽量不要保留声调,因为声调的兼容性也比较差. 支持不带声调的汉字转化成拼音的在线工具如下: http://www.atool.org/hanzi2pinyin.php http://zhongwenzhuanpiny

iOS中将汉字转换成拼音

NSMutableString *pinyin = [_name mutableCopy]; //转换成拼音 CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformMandarinLatin, NO); //去掉音调 CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformStripDiacr

python中将汉字转换成拼音

python3.4环境,在3.0以下的版本有些地方不一样,可自行修改. 可转换全部文章,唯一缺陷就是标点符号正常无法转换.以后想到再做修改. 1 #coding=gbk 2 ''' 3 Created on 2014-8-29 4 5 @author: Administrator 6 ''' 7 #import os 8 9 def convert(ch): 10 """该函数通过输入汉字返回其拼音,如果输入多个汉字,则返回第一个汉字拼音. 11 如果输入数字字符串,或者输入

【Excel&amp;VBA】Excel中汉字转换成拼音

Excel2007为例: “可用加载宏”快捷键——Alt+T+I Microsoft Visual Basic——Alt+F11 1:通过快捷键(Alt+F11)打开VBA编程窗口: 2:在对应Sheet处右键“插入”-“模块”: 3:在新建的“模块”中添加如下代码,运行子过程即可: 1 Function PinYin(Hz As String) 2 Dim PinMa As String 3 Dim MyPinMa As Variant 4 Dim Temp As Integer, i As

汉字转换成拼音-pinyin4j.jar的使用

package com.mummy.page; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneTy