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

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

1

2

3

4

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

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

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

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

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

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

#!/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函数的代码输出结果

代码使用方法:

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

时间: 2024-10-21 01:40:07

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

获取汉字全拼、首字母缩写

demo效果: 引用:using System.Collections; 后台代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.

js汉语转拼音(全拼、首字母、拼音首字母)

新建js文件first_alphabet.js 1 // JavaScript Document 2 // 汉字拼音首字母列表 本列表包含了20902个汉字,用于配合 ToChineseSpell 3 //函数使用,本表收录的字符的Unicode编码范围为19968至40869, XDesigner 整理 4 var strChineseFirstPY = "YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSC" + 5 "DQLDYLYBSSJGYZZJJFKCC

【原创】字符串工具类--获取汉字对应的拼音(全拼或首字母)

1.引入pinyin4j-2.5.0.jar包 2.代码实现: import java.util.regex.Matcher; import java.util.regex.Pattern; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.Hanyu

java根据汉字获取全拼和首字母

import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.sourcefor

c#中文转全拼或首拼

参考:http://www.jb51.net/article/42217.htmhttp://blog.csdn.net/cstester/article/details/4758172 ChineseToPinyinHelper.cs: using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; namespace FisherComom { /

php获取中文的拼音代码

获取中文的拼音代码 <?php class Pinyin { protected static $keys = "a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao|ce|ceng|cha|chai|chan|chang|chao|che|chen|cheng|chi|chong|chou|chu|chuai|chuan|chuang|chui

Css中如何使英文和拼音变成全大写、全小写和首字母大写?

想要实现英文和中文拼音变成全大写.全小写和首个字母大写,需要用到 css中text-transform样式属性,接下来介绍一下 1.text-transform的值 1)Capitalize:英文拼音的首字母大写 2)Uppercase:英文拼音字母全大写 3)Lowercase:英文拼音字母全小写 2.text-transform语法 text-transform:+值类型, 如:text-transform:Capitalize: 3.text-transform的简单使用 1)英文首字母大

python发送邮件的实例代码(支持html、图片、附件)

转自http://www.jb51.net/article/34498.htm 第一段代码 #!/usr/bin/python# -*- coding: utf-8 -*- import emailimport mimetypesfrom email.MIMEMultipart import MIMEMultipartfrom email.MIMEText import MIMETextfrom email.MIMEImage import MIMEImageimport smtplib def

Python中文转为拼音

# -*- coding: utf-8 -*-import sys def openTable(): f = open('gb-pinyin.table', 'r') table = f.read() f.close() return table def searchPinyin(num, table): if(num>0 & num<160): return chr(num) v=table.split(';') for i in xrange(len(v)-1,-1,-1): s=