天天看點

python unicode編碼轉換中文_用Python将中文轉換成拼音

大噶好,我是郭小帥。

各位老baby們,我更新啦!感動嗎?我連自己都被感動了!好久好久沒更新了,我說我忘記公衆号密碼了你們信嘛?

最近有幾位粉絲吧,幹啥啥不行,催更第一名。行,我服了,我放下了手裡的榮耀,放棄了我的隊友們,更一波!!【這段時間流失了不少粉,紮鐵啊老心們】

python unicode編碼轉換中文_用Python将中文轉換成拼音

最近呢,工作上遇到了不少案例,我都會來給大家都掰扯掰扯。

就比如,最近有個老baby問我,你能不能把中文轉換成拼音呀?當時我就在想,這是什麼需求?為啥會有這種需求?是啥應用場景呢?【懵逼】

但是像我這麼知【pa】書【re】達【ma】理【fan】的人,從來不問原因,幹活就完了!

我就琢磨,這種需求應該網上有很多嘛,Execl難道沒有這個功能嗎?【嫌棄臉】

python unicode編碼轉換中文_用Python将中文轉換成拼音
python unicode編碼轉換中文_用Python将中文轉換成拼音

然後呢,咱不就開始沖了嘛。嘿,突然發現看似尋常簡單的需求,咋搞起來還有點費勁呢。

首先,吐槽某度。某度經驗裡說用getpy()函數就能取,結果.....em.....不行【我版本不對?打開方式不對?還是說這個函數不是内置函數需要自己寫?不知道,它沒說,沒有用,反正我是不行......】

python unicode編碼轉換中文_用Python将中文轉換成拼音

哎,算了,某度我都習慣了.....那我們去網頁直翻吧。然後發現吧,網頁可以轉拼音,但就是會有各種各樣的問題。要麼有字數限制,要麼翻出來的還帶着聲調......

python unicode編碼轉換中文_用Python将中文轉換成拼音
python unicode編碼轉換中文_用Python将中文轉換成拼音

行吧,我又服了,也懶得找了,咱自己動手搞吧。

python unicode編碼轉換中文_用Python将中文轉換成拼音

接下來我們的重點來了,教你在5分鐘内使用Python将漢字轉換成拼音

第一步:去網上扒拉現成的

咳咳,對,我就是不要臉。造輪子是不可能造輪子的,隻能去網上扒拉一些下來改改勉強生活啦。【野路子程式員必備能力之一:網上粘下來改】

python unicode編碼轉換中文_用Python将中文轉換成拼音
python unicode編碼轉換中文_用Python将中文轉換成拼音

諾,你看,我們已經成功了一半了,接下來改成适合我們需求的就行。

第二步:改輪子

我們的需要轉換的資料比較多,是以呢我們增加一步去讀一下Excel,然後再周遊一下名字那一列,這不就完活了嘛【野路子程式員必備能力之二:臉皮厚且無比的相信自己能改出來】

python unicode編碼轉換中文_用Python将中文轉換成拼音

代碼詳解:

(1)老樣子,導入第三方庫

import pypinyinimport xlrd
           

(2)網上扒拉下來的輪子。兩個函數,都是用作漢字轉拼音的,一個帶聲調,一個不帶聲調

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
           

(3)自己改的輪子:讀取Excel,循環漢字姓名列,然後轉成拼音輸出

def readexcel(file='file.xls'):    try:        data = xlrd.open_workbook(file)        return data    except Exception as e:        print(str(e))def excel_table_by_name(file=u'test.xlsx', colnameindex=0, by_name=u'Sheet1'):  # 修改自己路徑    data = readexcel(file)    table = data.sheet_by_name(by_name)  # 獲得表格    nRows = table.nrows  # 拿到總共行數    title_list = table.row_values(0)  # 标題字段    for i in range(1, nRows):  # 循環行數        row_vals = table.row_values(i)        for val in enumerate(row_vals):  # 對每列資料進行循環            print(val[1],pinyin(val[1]))if __name__ == "__main__":    excel_table_by_name()
           

第三步:運作!完事!奏樂!交作業啦!即可以選擇要不要聲調,又沒有字數限制,還不用聯網!【野路子程式員必備能力之三:程式能運作了一定要自嗨!】

python unicode編碼轉換中文_用Python将中文轉換成拼音
python unicode編碼轉換中文_用Python将中文轉換成拼音

最後的最後,感謝那些對小帥不離不棄的老baby們【盡管小帥這個更新頻率确實感人....從周更、到月更、到季更】,但是我一直沒有斷更嘛,我還是有活躍度的嘛,你們要一直關注我哦,不要做渣粉~~

python unicode編碼轉換中文_用Python将中文轉換成拼音

老baby們請點贊、關注、轉發一波,你們的鼓勵就是我最大的動力!噢啦~

python unicode編碼轉換中文_用Python将中文轉換成拼音
python unicode編碼轉換中文_用Python将中文轉換成拼音