大噶好,我是郭小帥。
各位老baby們,我更新啦!感動嗎?我連自己都被感動了!好久好久沒更新了,我說我忘記公衆号密碼了你們信嘛?
最近有幾位粉絲吧,幹啥啥不行,催更第一名。行,我服了,我放下了手裡的榮耀,放棄了我的隊友們,更一波!!【這段時間流失了不少粉,紮鐵啊老心們】

最近呢,工作上遇到了不少案例,我都會來給大家都掰扯掰扯。
就比如,最近有個老baby問我,你能不能把中文轉換成拼音呀?當時我就在想,這是什麼需求?為啥會有這種需求?是啥應用場景呢?【懵逼】
但是像我這麼知【pa】書【re】達【ma】理【fan】的人,從來不問原因,幹活就完了!
我就琢磨,這種需求應該網上有很多嘛,Execl難道沒有這個功能嗎?【嫌棄臉】
然後呢,咱不就開始沖了嘛。嘿,突然發現看似尋常簡單的需求,咋搞起來還有點費勁呢。
首先,吐槽某度。某度經驗裡說用getpy()函數就能取,結果.....em.....不行【我版本不對?打開方式不對?還是說這個函數不是内置函數需要自己寫?不知道,它沒說,沒有用,反正我是不行......】
哎,算了,某度我都習慣了.....那我們去網頁直翻吧。然後發現吧,網頁可以轉拼音,但就是會有各種各樣的問題。要麼有字數限制,要麼翻出來的還帶着聲調......
行吧,我又服了,也懶得找了,咱自己動手搞吧。
接下來我們的重點來了,教你在5分鐘内使用Python将漢字轉換成拼音
第一步:去網上扒拉現成的
咳咳,對,我就是不要臉。造輪子是不可能造輪子的,隻能去網上扒拉一些下來改改勉強生活啦。【野路子程式員必備能力之一:網上粘下來改】
諾,你看,我們已經成功了一半了,接下來改成适合我們需求的就行。
第二步:改輪子
我們的需要轉換的資料比較多,是以呢我們增加一步去讀一下Excel,然後再周遊一下名字那一列,這不就完活了嘛【野路子程式員必備能力之二:臉皮厚且無比的相信自己能改出來】
代碼詳解:
(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()
第三步:運作!完事!奏樂!交作業啦!即可以選擇要不要聲調,又沒有字數限制,還不用聯網!【野路子程式員必備能力之三:程式能運作了一定要自嗨!】
最後的最後,感謝那些對小帥不離不棄的老baby們【盡管小帥這個更新頻率确實感人....從周更、到月更、到季更】,但是我一直沒有斷更嘛,我還是有活躍度的嘛,你們要一直關注我哦,不要做渣粉~~
老baby們請點贊、關注、轉發一波,你們的鼓勵就是我最大的動力!噢啦~