1. 程式人生 > >python實現漢字轉拼音和讀寫excel

python實現漢字轉拼音和讀寫excel

本文再次見證python是對付雜活的利器。不過,為什麼這麼多雜活呢?最近接到上級的任務,要在網路上收集一大批人圖片,主頁等資訊,然後將這些資訊填入到Excel表格。其中有一個令人髮指地無聊的工作就是要將所有人的英文名寫好整理好,由於都是中國人,因此,這工作也就是在考驗我的漢語拼音水平。

於是,我想到了python。在網上找了一些資訊,得出如下的思路:

1、漢字轉拼音

github上有人實現好了,我只需用現成的。

2、操作excel

關於python操作excel,由於網上某些低質量博文的誤導,多走了不少彎路。直到看到:

這樣,剩下的問題就是寫指令碼了。

現在,excel的格式如下:

school_name
name_cn name_en
Tianjin University 周天
Tianjin University 韓冬
Tianjin University 李興
下面寫指令碼將name_en列填好,程式碼如下:
#!/usr/bin/python
#-*-coding:utf-8-*-
from pinyin import PinYin
#module for excel handle
import xlrd
from xlutils.copy import copy

def name_tran(str):
    test=PinYin()
    test.load_word()
    str[0]
    family=test.hanzi2pinyin(string=str[0])[0]
    last=u''
    print str[1:]
    for word in test.hanzi2pinyin(string=str[1:]):
        last=last+word

    name_en=last.title()+u' '+family.title()
    return name_en


def file_fill(file_name,sheet_name,row_count):
    #開啟Excel檔案讀取資料
    data = xlrd.open_workbook(file_name)
    #獲取一個工作表
    #table = data.sheets()[0]#通過索引順序獲取
    #table = data.sheet_by_name(sheet_name)#通過名稱獲取
    table = data.sheet_by_index(3) #通過索引順序獲取
    #using xlutils to modify excel
    wb = copy(data)
    #通過get_sheet()獲取的sheet,有write()方法
    ws = wb.get_sheet(3)
    for i in range(1,row_count):
        name_cn=table.cell(i,1).value
        print name_cn 
        try:
            name_en=name_tran(name_cn)
            ws.write(i,2,name_en)
            print name_en
        except:
            print i+1,"th row fail to translate."
    wb.save(file_name)
    return "Over!"

if __name__=="__main__":
    file_fill(u"scholar&school.xls",u"Scholars",442)

程式碼執行之後,excel表的name_en列被填充,如下:

school_name name_cn name_en
Tianjin University 周天 Tian Zhou
Tianjin University 韓冬 Dong Han
Tianjin University 李興 Xing Li