Python中文转拼音代码(支持全拼和首字母缩写)

本文的代码,从https://github.com/cleverdeng/pinyin.py升级得来,针对原文的代码,做了以下升级:

1、可以传入参数firstcode:如果为true,只取汉子的第一个拼音字母;如果为false,则会输出全部拼音;

2、修复:如果为英文字母,则直接输出;

3、修复:如果分隔符为空字符串,仍然能正常输出;

4、升级:可以指定词典的文件路径

代码很简单,直接读取了一个词典(字符和英文的映射),然后挨个替换中文中的拼音即可;

#!/usr/bin/env python

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

"""

原版代码:https://github.com/cleverdeng/pinyin.py

新增功能:

    1、可以传入参数firstcode:如果为true,只取汉子的第一个拼音字母;如果为false,则会输出全部拼音;

    2、修复:如果为英文字母,则直接输出;

    3、修复:如果分隔符为空字符串,仍然能正常输出;

    4、升级:可以指定词典的文件路径

"""

__version__ = '0.9'

__all__ = ["PinYin"]

import os.path

class PinYin(object):

def __init__(self):

self.word_dict = {}

def load_word(self, dict_file):

self.dict_file = dict_file

if not os.path.exists(self.dict_file):

raise IOError("NotFoundFile")

with file(self.dict_file) as f_obj:

for f_line in f_obj.readlines():

try:

line = f_line.split('    ')

self.word_dict[line[0]] = line[1]

except:

line = f_line.split('   ')

self.word_dict[line[0]] = line[1]

def hanzi2pinyin(self, string="", firstcode=False):

result = []

if not isinstance(string, unicode):

string = string.decode("utf-8")

for char in string:

key = '%X' % ord(char)

value = self.word_dict.get(key, char)

outpinyin = str(value).split()[0][:-1].lower()

if not outpinyin:

outpinyin = char

if firstcode:

result.append(outpinyin[0])

else:

result.append(outpinyin)

return result

def hanzi2pinyin_split(self, string="", split="", firstcode=False):

"""提取中文的拼音

        @param string:要提取的中文

        @param split:分隔符

        @param firstcode: 提取的是全拼还是首字母?如果为true表示提取首字母,默认为False提取全拼  

        """

result = self.hanzi2pinyin(string=string, firstcode=firstcode)

return split.join(result)

if __name__ == "__main__":

test = PinYin()

test.load_word('word.data')

string = "Java程序性能优化-让你的Java程序更快更稳定"

print "in: %s" % string

print "out: %s" % str(test.hanzi2pinyin(string=string))

print "out: %s" % test.hanzi2pinyin_split(string=string, split="", firstcode=True)

print "out: %s" % test.hanzi2pinyin_split(string=string, split="", firstcode=False)


实例中main函数的代码输出结果

代码使用方法:

如果需要其他的提取,可以修改一下代码实现;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 11,138评论 2 16
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,322评论 0 10
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 8,487评论 0 7
  • 主席说:集中力量消灭敌人。 人的精力有限,要把有限的精力,集中于一件事情一个问题,只有这样才能把事情一件一件做好,...
    拼命挣钱的三十六画生阅读 3,754评论 0 0
  • 人总需要有一个目标,才不至于活得那么狼狈,我想成为那些精英中的一员,我想证明我自己,所以我要让自己变得更加优秀。我...
    岛屿之南阅读 1,423评论 0 0

友情链接更多精彩内容