用python把中文汉字转成拼音本章共记录了三个第三方库: xpinyin,pypinyin,snownlp
1.xpinyin
1.1安装方法
①直接使用在终端使用 pip install xpinyin
②使用镜像: https://editor.youkuaiyun.com/md/?articleId=112723320
1.2.使用
#先导入
from xpinyin import Pinyin
#简单使用一下
from xpinyin import Pinyin
p = Pinyin()
result = p.get_pinyin('小琳爱分享') #此处结果:xiao-lin-ai-fen-xiang
result = p.get_pinyin('小琳爱分享','') #此处结果:xiaolinaifenxiang
result = p.get_pinyin('小琳爱分享',' ') #此处结果:xiao lin ai fen xiang
print(result) #结果:xiao-lin-ai-fen-xiang
还有两种显示音调不同的方法,用的是tone_marks属性
from xpinyin import Pinyin
p = Pinyin()
result = p.get_pinyin('小琳爱分享',tone_marks='marks')
print(result)
#结果:xiǎo-lín-ài-fēn-xiǎng
#就会在指定拼音上显示音调
from xpinyin import Pinyin
p = Pinyin()
result = p.get_pinyin('小琳爱分享',tone_marks='numbers')
print(result)
#结果:xiao3-lin2-ai4-fen1-xiang3
#就会在每个拼音后面显示音调
附加小功能:
1.首字母大写
from xpinyin import Pinyin
p = Pinyin()
result = p.get_pinyin('小琳爱分享')
print(result) #此处结果:xiao-lin-ai-fen-xiang
s = result.split('-')
print(s) #此处结果: ['xiao', 'lin', 'ai', 'fen', 'xiang']
result1 = s[0].capitalize() + ' ' + ''.join(s[1:]).capitalize() #适用于名字
print(result1) 结果:Xiao Linaifenxiang
# .capitalize可以把字母的首字符大写
#下面这段代码把每一个字的首字母都大写,然后相连接
from xpinyin import Pinyin
p = Pinyin()
result = p.get_pinyin('小琳爱分享')
s = result.split('-')
print(s)
result1 = ''
for i in range(0,len(s)):
result1 = result1+s[i].capitalize()
print(result1) #结果:XiaoLinAiFenXiang
2.取首字母
#使用p.get_initial()或者p.get_initials()
from xpinyin import Pinyin
p = Pinyin()
result = p.get_initial('海') #get_initial只能对一个字 结果:H
result = p.get_initials('大海')#get_initials可以对两个字 结果:D-H
result = p.get_initials("大海", '') #结果:DH
result = p.get_initials("大海", ' ') #结果: D H
print(result)
或者
import pypinyin
word = '小琳爱分享'
result1 = pypinyin.pinyin(word, style=pypinyin.NORMAL)
word_2 = ''.join([i[0][0].upper() for i in result1]) #重点
print(word_2)
2.pypinyin
安装方法如1.1
2.2使用
#属性:
pypinyin.pinyin(hans, style=<Style.TONE:1>, heteronym=False, errors=’default’, strict=True)
1.其中参数hans是(unicode 字符串或字符串列表)-汉字字符串 ( ‘大海’ ) 或列表 ( [‘大’, ‘海’] )
2.参数style是指定拼音风格,默认是TONE风格,带声调。
不带声调: style=pypinyin.NORMAL
风格选择可见:http://www.exceloffice.net/archives/5216
3.heteronym参数表示是否启用多音字识别,Ture打开。
#第二条,第三条可参考
import pypinyin
# 不带声调的(style=pypinyin.NORMAL)
def pinyin(word):
s = ''
for i in pypinyin.pinyin(word, style=pypinyin.NORMAL):
s += ''.join(i)
return s
# 带声调的(默认)
def yinjie(word):
s = ''
# heteronym=True开启多音字
for i in pypinyin.pinyin(word, heteronym=True):
s = s + ''.join(i) + " "
return s
if __name__ == "__main__":
print(pinyin("一二三四五"))
print(yinjie("六七八九十"))
# style=pypinyin.NORMAL
import pypinyin
word = '小琳爱分享'
result1 = pypinyin.pinyin(word, style=pypinyin.NORMAL)
print(result1) #结果:[['xiao'], ['lin'], ['ai'], ['fen'], ['xiang']]
#heteronym=True
import pypinyin
word = '阿哒'
result1 = pypinyin.pinyin(word, heteronym=True)
print(result1) #结果:[['ā', 'ē', 'ě', 'ǎ', 'à', 'a'], ['dá', 'dā']]
#首字母大写,具体可参考xpinyin
import pypinyin
word = '小琳爱分享'
result1 = pypinyin.pinyin(word, style=pypinyin.NORMAL)
# print(result1)
word_1 = [i[0] for i in result1]
word_2 = word_1[0].capitalize()+' '+''.join(word_1[1:]).capitalize()
print(word_2)
#一些样式
>>> from pypinyin import lazy_pinyin, Style
>>> import pypinyin
>>> lazy_pinyin('中心')
['zhong', 'xin']
>>> lazy_pinyin('中心', style=Style.TONE)
['zhōng', 'xīn']
>>> lazy_pinyin('中心', style=Style.FIRST_LETTER)
['z', 'x']
>>> lazy_pinyin('中心', style=Style.TONE2)
['zho1ng', 'xi1n']
>>> lazy_pinyin('中心', style=Style.CYRILLIC)
['чжун1', 'синь1']
4.errors参数指定当遇到非汉字字符时如何处理,方式如下:
errors | 功能 |
---|---|
gnore | 忽略该字符 |
replace | 替换为去掉 \u 的 unicode 编码字符串 (‘\u90aa’ => ’90aa’) |
default | 保留原始字符 |
例子:
#返回二维列表
from pypinyin import * #pinyin, lazy_pinyin, Style
str1="大海"
print(pinyin(str1)) #结果:[['dà'], ['hǎi']]
#返回一维列表
pypinyin.lazy_pinyin(hans, style=<Style.NORMAL: 0>, errors=’default’, strict=True)
#将汉字转换为拼音,返回不包含多音字结果的拼音列表。与pinyin()的区别是返回的拼音是个字符串, 并且每个字只包含一个读音。
from pypinyin import * #pinyin,lazy_pinyin, Style
str1='中心'
list1=lazy_pinyin(str1,Style.NORMAL,True)
print(list1) #结果: [‘zhong’, ‘xin’]
#返回字符串
#如果要直接将返回的拼音连接成字符串,则可以使用
pypinyin.slug(hans, style=<Style.NORMAL: 0>, heteronym=False, separator=’-‘, errors=’default’, strict=True)
#将汉字转换为拼音,然后生成 slug 字符串。其中separator参数指定了连接拼音时用的分隔符。
import pypinyin
str1='中国人'
list1=pypinyin.slug(str1,separator=” “)
print(list1) #结果:zhong guo ren
3.snownlp
# 安装
pip install snownlp -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
# 导入
from snownlp import SnowNLP
s = SnowNLP('小王爱分享')
print(s.pinyin) #结果:['xiao', 'wang', 'ai', 'fen', 'xiang']
#将list转为字符串
result = s.pinyin[0].capitalize() + ' ' + ''.join(s.pinyin[1:]).capitalize()
print(result) #结果:Xiao Wangaifenxiang
#取首字母
from snownlp import SnowNLP
s = SnowNLP('小王爱分享')
result = ''.join([i[0].upper() for i in s.pinyin])
print(result) #结果:XWAFX