Python實(shí)現(xiàn)統(tǒng)計(jì)文本中的字符數(shù)量
最近,由于工作需要統(tǒng)計(jì)一下文本文檔中的各種不同類(lèi)字符的數(shù)量。將txt文本文檔中包含的的中文、英文、數(shù)字等字符數(shù)量進(jìn)行統(tǒng)計(jì)。
這當(dāng)然可以使用python的自動(dòng)化來(lái)完成操作,其實(shí)采用python字符串自帶的大多數(shù)函數(shù)就能夠完成功能。
由于統(tǒng)計(jì)英文字符的需要,這里需要導(dǎo)入string內(nèi)置模塊,以及os等文件操作模塊就能夠輕松完成。
import?string??#?string內(nèi)置模塊 import?os??#?os文件操作模塊
首先,需要開(kāi)發(fā)一個(gè)函數(shù)用來(lái)完成對(duì)一個(gè)普通的字符串中的各種不同類(lèi)型的字符進(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ì)。
接下來(lái),需要讀取我們的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)
最后,我們通過(guò)調(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)文章
關(guān)于Numpy中argsort()函數(shù)的用法解讀
這篇文章主要介紹了關(guān)于Numpy中argsort()函數(shù)的用法解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06Python實(shí)現(xiàn)圖像尺寸和格式轉(zhuǎn)換處理的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)圖像尺寸獲取和格式轉(zhuǎn)換處理的功能,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-04-04Python利用AutoGrad實(shí)現(xiàn)自動(dòng)計(jì)算函數(shù)斜率和梯度
AutoGrad 是一個(gè)老少皆宜的 Python 梯度計(jì)算模塊。對(duì)于大學(xué)生、機(jī)器學(xué)習(xí)愛(ài)好者而言,你只需要傳遞給它Numpy這樣的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)下編寫(xiě)的損失函數(shù),它就可以自動(dòng)計(jì)算損失函數(shù)的導(dǎo)數(shù)(梯度)。本文將從普通斜率計(jì)算開(kāi)始,介紹到如何只使用它來(lái)實(shí)現(xiàn)一個(gè)邏輯回歸模型2022-07-07