教你使用Python pypinyin庫實現漢字轉拼音
一、前言
這裡我先為大傢提供一個中文網站,大傢可以下去更深入的學習。
https://pypi.org/project/pypinyin/
pypinyin庫,主要有幾下幾個特性:
- 智能匹配最正確的拼音;
- 支持多音字、繁體字;
- 支持多種不同拼音、註音風格;
該庫屬於第三方Python庫,因此在使用之前,需要提前安裝。
pip install pypinyin
然後,導入該庫即可。
import pypinyin from pypinyin import pinyin
二、pypinyin庫的使用
先來看一個最基本的例子。
from pypinyin import pinyin pinyin("吃飯")
結果如下:
有些字,可能是多音字,再看下面這個例子。
from pypinyin import pinyin pinyin('馮',heteronym=True) pinyin('朝',heteronym=True) pinyin('同',heteronym=True)
結果如下:
仔細觀察上述打印結果,生成的都是二維列表嵌套,這樣解析起來,真費勁!
能不能生成一維列表呢?
from pypinyin import lazy_pinyin lazy_pinyin("數據分析與統計學之美")
結果如下:
問題又來瞭!
這裡雖然是一維列表,但是沒有聲調瞭,這不尷尬瞭嗎?
這裡面就涉及到一個風格轉換的問題瞭。
from pypinyin import lazy_pinyin,Style lazy_pinyin("數據分析與統計學之美",style=Style.TONE)
結果如下:
原來這裡有一個Style類,供我們選擇風格,常用的風格有下面這14種。
#: 普通風格,不帶聲調。如: 中國 -> ``zhong guo`` NORMAL = 0 #: 標準聲調風格,拼音聲調在韻母第一個字母上(默認風格)。如: 中國 -> ``zhōng guó`` TONE = 1 #: 聲調風格2,即拼音聲調在各個韻母之後,用數字 [1-4] 進行表示。如: 中國 -> ``zho1ng guo2`` TONE2 = 2 #: 聲調風格3,即拼音聲調在各個拼音之後,用數字 [1-4] 進行表示。如: 中國 -> ``zhong1 guo2`` TONE3 = 8 #: 聲母風格,隻返回各個拼音的聲母部分(註:有的拼音沒有聲母,詳見 `#27`_)。如: 中國 -> ``zh g`` INITIALS = 3 #: 首字母風格,隻返回拼音的首字母部分。如: 中國 -> ``z g`` FIRST_LETTER = 4 #: 韻母風格,隻返回各個拼音的韻母部分,不帶聲調。如: 中國 -> ``ong uo`` FINALS = 5 #: 標準韻母風格,帶聲調,聲調在韻母第一個字母上。如:中國 -> ``ōng uó`` FINALS_TONE = 6 #: 韻母風格2,帶聲調,聲調在各個韻母之後,用數字 [1-4] 進行表示。如: 中國 -> ``o1ng uo2`` FINALS_TONE2 = 7 #: 韻母風格3,帶聲調,聲調在各個拼音之後,用數字 [1-4] 進行表示。如: 中國 -> ``ong1 uo2`` FINALS_TONE3 = 9 #: 註音風格,帶聲調,陰平(第一聲)不標。如: 中國 -> ``ㄓㄨㄥ ㄍㄨㄛˊ`` BOPOMOFO = 10 #: 註音風格,僅首字母。如: 中國 -> ``ㄓ ㄍ`` BOPOMOFO_FIRST = 11 #: 漢語拼音與俄語字母對照風格,聲調在各個拼音之後,用數字 [1-4] 進行表示。如: 中國 -> ``чжун1 го2`` CYRILLIC = 12 #: 漢語拼音與俄語字母對照風格,僅首字母。如: 中國 -> ``ч г`` CYRILLIC_FIRST = 13
如果你的文字中,除瞭漢字,還有其它符號以及英文,會打印出怎麼樣的效果呢?
from pypinyin import lazy_pinyin lazy_pinyin('Hello,我是😀',style=Style.TONE)
結果如下:
漢字打印出來就行,英文、表情符號不用打印出來最好,應該怎麼辦呢?
這裡有一個errors參數呢,來看看例子。
from pypinyin import lazy_pinyin lazy_pinyin('Hello,我是😀',style=Style.TONE,errors='ignore')
結果如下:
如果你對pypinyin庫的返回結果不滿意,可以自定義一個庫呀!這裡可以使用load_phrases_dict 方法。
我們先來看一個例子:
from pypinyin import lazy_pinyin lazy_pinyin("黃同學",style=Style.TONE)
結果如下:
“黃同學” 的同,明明是二聲,這裡成瞭四聲。
from pypinyin import lazy_pinyin, load_phrases_dict personalized_dict = {'黃同學': [['huáng'], ['tòng'], ['xué']]} load_phrases_dict(personalized_dict) lazy_pinyin("黃同學",style=Style.TONE)
結果如下:
到此這篇關於教你使用Python pypinyin庫實現漢字轉拼音的文章就介紹到這瞭,更多相關Python pypinyin庫內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python 中拼音庫 PyPinyin 用法詳解
- js實現中文轉拼音的完整步驟記錄
- Python使用scipy.fft進行大學經典的傅立葉變換
- Python詳解文字轉語音的實現
- Python序列化模塊之pickle與json詳解