Python漢字轉(zhuǎn)拼音pypinyin庫、輸出excel的xlwt庫
一、為什么要搞?
前幾天有同學(xué)在討論家中小盆友的作業(yè)問題,說連一些拼音作業(yè)的難度已經(jīng)超出了能力范圍,感嘆自己已經(jīng)比不上現(xiàn)在的小學(xué)生了。聽得滋滋有味的我又產(chǎn)生了一個(gè)大膽的想法:
使用Python自動(dòng)在每個(gè)文字的上方標(biāo)注拼音
預(yù)期輸出示例如下:

二、準(zhǔn)備如何搞?
查閱一番資料后,發(fā)現(xiàn)一個(gè)神奇的庫:pypinyin,可以輕松將漢字文本轉(zhuǎn)換為拼音
先來安裝pypinyin
pip install pypinyin
這還不夠,要將文本和拼音輸出到文件,我想到了以下兩條路:
1.結(jié)果寫入到txt或者doc文件
2.結(jié)果寫入到excel表格
仔細(xì)思考后發(fā)現(xiàn)第一條路很難實(shí)現(xiàn)拼音和漢字的連續(xù)換行以及一一對(duì)應(yīng),而通過excel表格的話能輕松標(biāo)識(shí)漢字和拼音需要寫入的行和列
這里使用比較熟悉的xlwt模塊寫入excel,先來安裝
pip install xlwt
事先準(zhǔn)備了需要轉(zhuǎn)換的文本內(nèi)容test_file.txt,1000+漢字,手動(dòng)注音的話,那不得放個(gè)寒暑假了?。?/p>

三、說搞咱就搞!
文本讀取與預(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)庫不算哈)
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庫一行代碼輕松實(shí)現(xiàn)文本轉(zhuǎn)拼音
2.使用xlwt庫輸出excel結(jié)果文件,將對(duì)應(yīng)的拼音標(biāo)注到每個(gè)漢字的上方
3.問題:若文本內(nèi)容中包含連續(xù)的無法轉(zhuǎn)換為拼音的字符,會(huì)造成拼音和漢字不能一一對(duì)應(yīng)
到此這篇關(guān)于Python漢字轉(zhuǎn)拼音pypinyin庫、輸出excel的xlwt庫的文章就介紹到這了,更多相關(guān)Python漢字轉(zhuǎn)拼音pypinyin、excel的xlwt庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python pypinyin庫實(shí)現(xiàn)漢字轉(zhuǎn)拼音的全面使用指南
- Python中pinyin庫實(shí)現(xiàn)漢字轉(zhuǎn)換為拼音
- Python pypinyin注音庫輕松絲滑實(shí)現(xiàn)漢字轉(zhuǎn)換成拼音
- 基于Python實(shí)現(xiàn)簡單的漢字拼音轉(zhuǎn)換工具
- 教你使用Python pypinyin庫實(shí)現(xiàn)漢字轉(zhuǎn)拼音
- 利用python實(shí)現(xiàn)漢字轉(zhuǎn)拼音的2種方法
- 基于Python+PyQt5實(shí)現(xiàn)漢字轉(zhuǎn)拼音的智能轉(zhuǎn)換工具
相關(guān)文章
pandas之分組統(tǒng)計(jì)列聯(lián)表pd.crosstab()問題
這篇文章主要介紹了pandas之分組統(tǒng)計(jì)列聯(lián)表pd.crosstab()問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
解決torch.autograd.backward中的參數(shù)問題
今天小編就為大家分享一篇解決torch.autograd.backward中的參數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python標(biāo)準(zhǔn)庫uuid模塊(生成唯一標(biāo)識(shí))詳解
uuid通過Python標(biāo)準(zhǔn)庫的uuid模塊生成通用唯一ID(或“UUID”)的一種快速簡便的方法,下面這篇文章主要給大家介紹了關(guān)于Python標(biāo)準(zhǔn)庫uuid模塊(生成唯一標(biāo)識(shí))?的相關(guān)資料,需要的朋友可以參考下2022-05-05
Python調(diào)整數(shù)組形狀如何實(shí)現(xiàn)
這篇文章主要介紹了Python調(diào)整數(shù)組形狀如何實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-12-12
基于OpenCV4.2實(shí)現(xiàn)單目標(biāo)跟蹤
這篇文章主要介紹了如何和何時(shí)使用OpenCV 4.2中可用的8種不同的跟蹤器- BOOSTING, MIL, KCF, TLD, MEDIANFLOW, GOTURN, MOSSE和CSRT,并用他們實(shí)現(xiàn)單目標(biāo)跟蹤,需要的可以參考一下2022-03-03
django中使用POST方法獲取POST數(shù)據(jù)
這篇文章主要介紹了django中使用POST方法獲取POST數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Python基礎(chǔ)之函數(shù)用法實(shí)例詳解
這篇文章主要介紹了Python中函數(shù)用法,包括了函數(shù)的創(chuàng)建、定義、參數(shù)等,需要的朋友可以參考下2014-09-09

