Python實(shí)現(xiàn)統(tǒng)計(jì)文本中的字符數(shù)量
最近,由于工作需要統(tǒng)計(jì)一下文本文檔中的各種不同類字符的數(shù)量。將txt文本文檔中包含的的中文、英文、數(shù)字等字符數(shù)量進(jìn)行統(tǒng)計(jì)。
這當(dāng)然可以使用python的自動(dòng)化來完成操作,其實(shí)采用python字符串自帶的大多數(shù)函數(shù)就能夠完成功能。
由于統(tǒng)計(jì)英文字符的需要,這里需要導(dǎo)入string內(nèi)置模塊,以及os等文件操作模塊就能夠輕松完成。
import?string??#?string內(nèi)置模塊 import?os??#?os文件操作模塊
首先,需要開發(fā)一個(gè)函數(shù)用來完成對(duì)一個(gè)普通的字符串中的各種不同類型的字符進(jìn)行統(tǒng)計(jì),如下代碼所示:
def?count_string(str_=None):
????count_en?=?count_dg?=?count_sp?=?count_zh?=?count_pu?=?0
????if?str_?is?None:
????????print("字符串str_為空!")
????????return?count_en,?count_dg,?count_sp,?count_zh,?count_pu
????for?st?in?str_:
????????#?英文
????????if?st?in?string.ascii_letters:
????????????count_en?+=?1
????????#?數(shù)字
????????elif?st.isdigit():
????????????count_dg?+=?1
????????#?空格
????????elif?st.isspace():
????????????count_sp?+=?1
????????#?中文
????????elif?st.isalpha():
????????????count_zh?+=?1
????????#?特殊字符
????????else:
????????????count_pu?+=?1
????print("字符串str_:",?str_)
????return?count_en,?count_dg,?count_sp,?count_zh,?count_pu上面的count_string函數(shù)已經(jīng)實(shí)現(xiàn)了可以對(duì)某個(gè)字符串中的不同字符數(shù)量進(jìn)行統(tǒng)計(jì)。
接下來,需要讀取我們的txt文本文檔,然后對(duì)其中每一行的字符串進(jìn)行統(tǒng)計(jì)。從而可以獲取整個(gè)文檔中的不同字符的數(shù)量分別是多少。
代碼如下:
def?read_text(text_path=None):
????count_en_all?=?count_dg_all?=?count_sp_all?=?count_zh_all?=?count_pu_all?=?0
????if?text_path?is?None:
????????print('文本文檔的路徑不能為空!')
????????return
????if?not?os.path.isfile(text_path):
????????print('文本文檔的路徑不存在,請(qǐng)重新輸入!')
????????return
????with?open(text_path,?'r',?encoding='utf-8')?as?file_:
????????for?line_?in?file_.readlines():
????????????if?line_.strip()?!=?'':
????????????????count_en,?count_dg,?count_sp,?count_zh,?count_pu?=?count_string(line_)
????????????????count_en_all?=?count_en_all?+?count_en
????????????????count_dg_all?=?count_dg_all?+?count_dg
????????????????count_sp_all?=?count_sp_all?+?count_sp
????????????????count_zh_all?=?count_zh_all?+?count_zh
????????????????count_pu_all?=?count_pu_all?+?count_pu
????print('當(dāng)前文本文檔{},結(jié)果統(tǒng)計(jì)如下:'.format(text_path))
????print('英文字符:',?count_en_all)
????print('數(shù)字:',?count_dg_all)
????print('空格:',?count_sp_all)
????print('中文:',?count_zh_all)
????print('特殊字符:',?count_pu_all)
最后,我們通過調(diào)用read_text文本文檔處理函數(shù),即可統(tǒng)計(jì)出當(dāng)前文檔所有的不同字符的數(shù)量。
read_text('D:/test-data-work/data.txt')
#?當(dāng)前文本文檔D:/test-data-work/data.txt,結(jié)果統(tǒng)計(jì)如下:
#?英文字符:108
#?數(shù)字:209
#?空格:53
#?中文:288
#?特殊字符:90
若是需要批量操作,則可以使用python遍歷文件夾的方式,對(duì)每個(gè)文檔進(jìn)行逐一統(tǒng)計(jì)。
這里可以使用os.listdir函數(shù)對(duì)文件夾進(jìn)行簡(jiǎn)單的遍歷操作。
for?file_name?in?os.listdir('dir_path'):
????pass到此這篇關(guān)于Python實(shí)現(xiàn)統(tǒng)計(jì)文本中的字符數(shù)量的文章就介紹到這了,更多相關(guān)Python統(tǒng)計(jì)文本字符數(shù)量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python多進(jìn)程與多線程適用場(chǎng)景案例分析
本文介紹了多線程和多進(jìn)程各自的適用場(chǎng)景和特點(diǎn),并通過具體案例進(jìn)行說明,多線程適用于IO密集型任務(wù),如爬蟲、文件讀寫等,而多進(jìn)程適用于CPU密集型任務(wù),如矩陣運(yùn)算、數(shù)據(jù)挖掘等,感興趣的朋友跟隨小編一起看看吧2026-01-01
Python分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)示例代碼
在Python中,分支結(jié)構(gòu)通過if、elif和else關(guān)鍵字來實(shí)現(xiàn)條件判斷,在使用if語句時(shí),程序會(huì)根據(jù)條件表達(dá)式的真假執(zhí)行相應(yīng)的代碼塊,這篇文章主要介紹了Python分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),需要的朋友可以參考下2024-03-03
python如何實(shí)現(xiàn)數(shù)組元素兩兩相加
這篇文章主要介紹了python如何實(shí)現(xiàn)數(shù)組元素兩兩相加,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
使用Python建立RNN實(shí)現(xiàn)二進(jìn)制加法的示例代碼
這篇文章主要介紹了使用Python建立RNN實(shí)現(xiàn)二進(jìn)制加法的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Python編程實(shí)現(xiàn)控制cmd命令行顯示顏色的方法示例
這篇文章主要介紹了Python編程實(shí)現(xiàn)控制cmd命令行顯示顏色的方法,結(jié)合實(shí)例形式分析了Python針對(duì)命令行字符串顯示顏色屬性相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
Python利用selenium建立代理ip池訪問網(wǎng)站的全過程
selenium控制瀏覽器也是可以使用代理ip的,下面這篇文章主要給大家介紹了關(guān)于Python利用selenium建立代理ip池訪問網(wǎng)站的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03

