Python漢字轉(zhuǎn)拼音pypinyin庫(kù)、輸出excel的xlwt庫(kù)
一、為什么要搞?
前幾天有同學(xué)在討論家中小盆友的作業(yè)問題,說(shuō)連一些拼音作業(yè)的難度已經(jīng)超出了能力范圍,感嘆自己已經(jīng)比不上現(xiàn)在的小學(xué)生了。聽得滋滋有味的我又產(chǎn)生了一個(gè)大膽的想法:
使用Python自動(dòng)在每個(gè)文字的上方標(biāo)注拼音
預(yù)期輸出示例如下:
二、準(zhǔn)備如何搞?
查閱一番資料后,發(fā)現(xiàn)一個(gè)神奇的庫(kù):pypinyin,可以輕松將漢字文本轉(zhuǎn)換為拼音
先來(lái)安裝pypinyin
pip install pypinyin
這還不夠,要將文本和拼音輸出到文件,我想到了以下兩條路:
1.結(jié)果寫入到txt或者doc文件
2.結(jié)果寫入到excel表格
仔細(xì)思考后發(fā)現(xiàn)第一條路很難實(shí)現(xiàn)拼音和漢字的連續(xù)換行以及一一對(duì)應(yīng),而通過(guò)excel表格的話能輕松標(biāo)識(shí)漢字和拼音需要寫入的行和列
這里使用比較熟悉的xlwt模塊寫入excel,先來(lái)安裝
pip install xlwt
事先準(zhǔn)備了需要轉(zhuǎn)換的文本內(nèi)容test_file.txt,1000+漢字,手動(dòng)注音的話,那不得放個(gè)寒暑假了?。?/p>
三、說(shuō)搞咱就搞!
文本讀取與預(yù)處理
使用with open方法打開文本,readlines方法讀取文本內(nèi)容
注意:文本內(nèi)容當(dāng)中包含換行符,這里做了去除處理
# 文本讀取與預(yù)處理 file = 'test_file.txt' with open(file, 'r', encoding='utf-8') as f: text = f.readlines() f.close() new_text = ''.join((''.join(text)).splitlines()) # 去除文本的換行符 print(new_text)
運(yùn)行效果:
文本拼音獲取
一行代碼搞定(導(dǎo)庫(kù)不算哈)
from pypinyin import pinyin text_pinyin = pinyin(new_text) print(text_pinyin)
運(yùn)行結(jié)果:
結(jié)果excel輸出
我們闊以看到,漢字字?jǐn)?shù)和拼音數(shù)量是對(duì)得上的
list_length_hz = len(new_text) # 漢字字?jǐn)?shù) list_length_py = len(text_pinyin) # 拼音數(shù)量 print(f"漢字:{list_length_hz}") print(f"拼音:{list_length_py}")
運(yùn)行結(jié)果:
先使用xlwt建立wookbook和worksheet
import xlwt new_file = 'target.xls' wb = xlwt.Workbook(encoding='utf-8') # 新建工作簿 ws = wb.add_sheet('target_sheet', cell_overwrite_ok=True) # 新建工作表
這里將漢字和拼音寫入到excel的 列*行=20*max_row 的單元格中,先設(shè)置列數(shù)并根據(jù)拼音數(shù)量獲取最大行數(shù)
import math num_cols = 20 # 列數(shù) num_rows = math.ceil(list_length_py / 20) # 最大行數(shù),不足20補(bǔ)一行
然后將漢字寫入Excel工作表的奇數(shù)行
for i in range(num_rows): for j in range(num_cols): # 獲取漢字列表值,若索引超出范圍則使用空字符串代替 v = '' if i * num_cols + j >= list_length_hz else new_text[i * num_cols + j] # 將值寫入單元格的奇數(shù)行中 ws.write(i*2+1, j, v)
再將拼音寫入Excel工作表的偶數(shù)行
for i in range(num_rows): for j in range(num_cols): # 獲取漢字列表值,若索引超出范圍則使用空字符串代替 v = '' if i * num_cols + j >= list_length_py else text_pinyin[i * num_cols + j] # 將值寫入單元格的偶數(shù)行中 ws.write(i*2, j, v)
最后將工作簿保存為excel
wb.save(new_file)
excel結(jié)果文件示例如下:
四、搞完收工!
1.使用pypin庫(kù)一行代碼輕松實(shí)現(xiàn)文本轉(zhuǎn)拼音
2.使用xlwt庫(kù)輸出excel結(jié)果文件,將對(duì)應(yīng)的拼音標(biāo)注到每個(gè)漢字的上方
3.問題:若文本內(nèi)容中包含連續(xù)的無(wú)法轉(zhuǎn)換為拼音的字符,會(huì)造成拼音和漢字不能一一對(duì)應(yīng)
到此這篇關(guān)于Python漢字轉(zhuǎn)拼音pypinyin庫(kù)、輸出excel的xlwt庫(kù)的文章就介紹到這了,更多相關(guān)Python漢字轉(zhuǎn)拼音pypinyin、excel的xlwt庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python數(shù)據(jù)結(jié)構(gòu)之遞歸方法詳解
這篇文章主要為大家介紹了遞歸的基本概念以及如何構(gòu)建遞歸程序。通過(guò)本章的學(xué)習(xí),大家可以理解遞歸的基本概念,了解遞歸背后蘊(yùn)含的編程思想以及掌握構(gòu)建遞歸程序的方法,需要的可以參考一下2022-04-04Python 將RGB圖像轉(zhuǎn)換為Pytho灰度圖像的實(shí)例
下面小編就為大家?guī)?lái)一篇Python 將RGB圖像轉(zhuǎn)換為Pytho灰度圖像的實(shí)例。具有很好的參考價(jià)值。希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-11-11python學(xué)習(xí)之panda數(shù)據(jù)分析核心支持庫(kù)
這篇文章主要給大家介紹了關(guān)于python學(xué)習(xí)之panda數(shù)據(jù)分析核心支持庫(kù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05python直接獲取API傳遞回來(lái)的參數(shù)方法
今天小編就為大家分享一篇python直接獲取API傳遞回來(lái)的參數(shù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12python對(duì)數(shù)組進(jìn)行排序,并輸出排序后對(duì)應(yīng)的索引值方式
今天小編就為大家分享一篇python對(duì)數(shù)組進(jìn)行排序,并輸出排序后對(duì)應(yīng)的索引值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02Python讀寫文件模式和文件對(duì)象方法實(shí)例詳解
這篇文章主要介紹了Python讀寫文件模式和文件對(duì)象方法,結(jié)合實(shí)例形式詳細(xì)分析了Python文件操作常用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-09-09