【Python】 汉字转化汉语拼音pinyin

本文介绍了pinyin.py模块,这是一个用于将汉字转换成拼音的小工具。文中提供了安装指南及使用示例,并对源码进行了两处改进:一是增强对非汉字字符的支持;二是优化了拼接结果的返回形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pinyin

  pinyin模块是github上一个小项目,在github.com/cleverdeng/pinyin.py上面可以下到源码。衷心感谢那些为这个模块做出贡献的人来方便我们【鞠躬】

  安装:

    下载获得github上的包之后,解压,在cmd下将工作目录切换到解压出来的文件夹里。#python setup.py build,之后就装好了

  我记得在我第一次用这个模块之前,我参考了某位前辈的工作,稍微改了一下pinyin的源码,那篇文章已经找不到了T-T。谢过那位前辈

  源码第一处改动:改动class PinYin下的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

#########把它改成这样##################
    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

  第二处改动:class PinYin 下的 hanzi2pinyin_split方法:

############原来函数是这样的###########
    def hanzi2pinyin_split(self, string="", split=""):
        result = self.hanzi2pinyin(string=string)
        if split == "":
            return result
        else:
            return split.join(result)

###########改过之后的函数############
    def hanzi2pinyin_split(self, string="", split=""):
        result = self.hanzi2pinyin(string=string)
        #if split == "":        #注释掉这三句,功能是这个函数的split参数为空串的时候也返回一个连在一起的字符串而不是一个列表
        #   return result
        #else:
        return split.join(result)

 

  *pinyin把汉字转拼音的原理是从一个外部文件,找到相关汉字的拼音表示然后替换原文。这个外部文件在PinYin初始化时由变量的dict_file指定。需要注意的是原文没有写绝对路径,也就是说默认word.data文件是放在和pinyin.py同一个目录下的。可以自己根据需要修改

 

  用法:

import pinyin

pinyinTransfer = pinyin.PinYin()
pinyinTransfer.load_word()
print pinyinTransfer.hanzi2pinyin("一段中文内容")
>>> yiduanzhongwenneirong

print pinyinTransfer.hanzi2pingyin("一段中文内容",split="|")
>>> yi|duan|zhong|wen|nei|rong

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值