天天看點

寶寶:媽媽,這些 “漢字” 怎麼讀呀?媽媽:我用Python來教教你哦!

好玩兒的pypinyin庫

今天,握有發現了一個好玩兒的庫,叫做 “pypinyin ”,用于幫助我們實作漢字轉拼音。

寶寶:媽媽,這些 “漢字” 怎麼讀呀?媽媽:我用Python來教教你哦!

這裡我先為大家提供一個中文網站,大家可以下去更深入的學習。

https://pypi.org/project/pypinyin/

pypinyin庫,主要有幾下幾個特性:

  • 智能比對最正确的拼音;
  • 支援多音字、繁體字;
  • 支援多種不同拼音、注音風格;

該庫屬于第三方Python庫,是以在使用之前,需要提前安裝。

pip install pypinyin           

複制

然後,導入該庫即可。

import pypinyin
from pypinyin import pinyin           

複制

pypinyin庫的使用

先來看一個最基本的例子。

from pypinyin import pinyin
pinyin("吃飯")           

複制

結果如下:

寶寶:媽媽,這些 “漢字” 怎麼讀呀?媽媽:我用Python來教教你哦!

有些字,可能是多音字,再看下面這個例子。

from pypinyin import pinyin
pinyin('馮',heteronym=True)
pinyin('朝',heteronym=True)
pinyin('同',heteronym=True)           

複制

結果如下:

寶寶:媽媽,這些 “漢字” 怎麼讀呀?媽媽:我用Python來教教你哦!

仔細觀察上述列印結果,生成的都是二維清單嵌套,這樣解析起來,真費勁!

能不能生成一維清單呢?

from pypinyin import lazy_pinyin
lazy_pinyin("資料分析與統計學之美")           

複制

結果如下:

寶寶:媽媽,這些 “漢字” 怎麼讀呀?媽媽:我用Python來教教你哦!

問題又來了!

這裡雖然是一維清單,但是沒有聲調了,這不尴尬了嗎?

這裡面就涉及到一個風格轉換的問題了。

from pypinyin import lazy_pinyin,Style
lazy_pinyin("資料分析與統計學之美",style=Style.TONE)           

複制

結果如下:

寶寶:媽媽,這些 “漢字” 怎麼讀呀?媽媽:我用Python來教教你哦!

原來這裡有一個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)           

複制

結果如下:

寶寶:媽媽,這些 “漢字” 怎麼讀呀?媽媽:我用Python來教教你哦!

漢字列印出來就行,英文、表情符号不用列印出來最好,應該怎麼辦呢?

這裡有一個errors參數呢,來看看例子。

from pypinyin import lazy_pinyin

lazy_pinyin('Hello,我是😀',style=Style.TONE,errors='ignore')           

複制

結果如下:

寶寶:媽媽,這些 “漢字” 怎麼讀呀?媽媽:我用Python來教教你哦!

如果你對pypinyin庫的傳回結果不滿意,可以自定義一個庫呀!這裡可以使用load_phrases_dict 方法。

我們先來看一個例子:

from pypinyin import lazy_pinyin

lazy_pinyin("黃同學",style=Style.TONE)           

複制

結果如下:

寶寶:媽媽,這些 “漢字” 怎麼讀呀?媽媽:我用Python來教教你哦!

“黃同學” 的同,明明是二聲,這裡成了四聲。

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來教教你哦!

今天的文章就給大家講述到這裡。