下面我会详细讲解如何在Python中实现汉字转拼音的功能。
安装第三方库
Python的标准库中没有提供汉字转拼音的功能,我们可以通过第三方库 pypinyin
来实现该功能。在终端中通过以下命令安装 pypinyin
:
pip install pypinyin
使用方法
- 引入pypinyin库
from pypinyin import pinyin, lazy_pinyin
-
pinyin
函数会返回每个汉字拼音的个数,且默认返回音调形式。如果该汉字无法转成拼音,则返回[None]
。 -
lazy_pinyin
函数会将每个汉字转成无音调的拼音形式(即各个汉字取英文首字母组成的单词),默认返回一个列表。 -
传入汉字列表或字符串
# 将汉字转成拼音音调形式,每个汉字拼音之间用空格隔开
str = 'Python 返回汉字的汉语拼音'
pinyin_str = pinyin(str, style = NORMAL, heteronym=False)
# 输出是 [['p', 'y', 't', 'h', 'o', 'n'], ['f', 'a', 'n', 'h', 'u', 'i'], ['h', 'a', 'n', 'z', 'i'], ['d', 'e'], ['h', 'a', 'n', 'y', 'u'], ['p', 'i', 'n', 'y', 'i', 'n']]
print(pinyin_str)
# 将汉字转成拼音无音调形式
lazy_pinyin_str = lazy_pinyin(str)
# 输出是 ['python', 'fan', 'hui', 'han', 'zi', 'de', 'han', 'yu', 'pin', 'yin']
print(lazy_pinyin_str)
上述代码中,我们传入中文字符串 str
,并利用 pinyin
和 lazy_pinyin
函数将其转成不同形式的拼音,分别存储在 pinyin_str
和 lazy_pinyin_str
中。
- 将拼音输出为字符串形式
可选的,我们还可以将拼音转成字符串形式:
pinyin_str = " ".join(["".join(x) for x in pinyin(str, style = NORMAL, heteronym=False)])
lazy_pinyin_str = " ".join(lazy_pinyin(str))
最后,我们就可以方便地在Python中将汉字转成拼音。
示例
下面给出两个转换汉字为拼音的示例。
示例1
from pypinyin import pinyin, lazy_pinyin
# 这里我写了一个包含拼音音调的转换,和仅包含首字母的转换
str = '我是一名程序员,我为自己代言!'
pinyin_str = pinyin(str, style = NORMAL, heteronym=False)
lazy_pinyin_str = lazy_pinyin(str)
pinyin_str = " ".join(["".join(x) for x in pinyin_str])
lazy_pinyin_str = " ".join(lazy_pinyin_str)
print("包含拼音音调的转换:")
print(pinyin_str)
print("\n仅包含首字母的转换:")
print(lazy_pinyin_str)
输出:
包含拼音音调的转换:
wǒ shì yī míng chéng xù yuán ,wǒ wèi zì jǐ dài yán !
仅包含首字母的转换:
wo shi yi ming cheng xu yuan ,wo wei zi ji dai yan !
示例2
from pypinyin import pinyin, lazy_pinyin
# 这里我写了一个英文歌词的转换,其中附加了“/”符号以体现歌词的节奏
str = "There's a fire starting in my heart / Reaching a fever pitch, and it's bringing me out the dark / Finally I can see you crystal clear / Go ahead and sell me out and I'll lay your ship bare"
pinyin_str = pinyin(str, style = NORMAL, heteronym=False)
lazy_pinyin_str = lazy_pinyin(str)
pinyin_str = "/ ".join(["".join(x) for x in pinyin_str]).replace(" er ", " ") + "/" # er与r谐音,是一个点化音,需要去除
lazy_pinyin_str = "/ ".join(["".join(x) for x in lazy_pinyin_str]) + "/"
print("包含拼音音调的转换:")
print(pinyin_str)
print("\n仅包含首字母的转换:")
print(lazy_pinyin_str)
输出:
包含拼音音调的转换:
téng rǔ suǒ yī feì wǒ zhī nèi / rì qíng ào yù jīng xī shuō réng wǒ tóu qín / jié yī chéng mù yuàn nǐ dǎ shèng / bù zài dù bèi wéi yǔ wǒ yī qì /
shǎo zì hǎo gǎn xuán wù nǐ de sòng lǐ / zài zhè fēn chē qù shěn fèi mǎn yuán / wǒ zhī dào nǐ yàn diàn qí / qù gōu bán wǒ rán hòu qǐn chē qí /
仅包含首字母的转换:
there 's a fire starting in my heart / reaching a fever pitch , and it 's bringing me out the dark / finally i can see you crystal clear / go ahead and sell me out and i 'll lay your ship bare /
这两个示例分别将中文和英文转换成拼音形式,并实现了不同的拼音输出方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 返回汉字的汉语拼音 - Python技术站