專案需要對一些如doc、docx、txt等常見格式的檔案進行分詞處理,之前只用python的jieba庫進行過簡單的中文分詞,效果不錯,但是只能讀取txt檔案,功能受限。今天查閱了一些論壇,將doc轉換為docx,成功讀取docx檔案並分詞,並解決了txt讀取的非法字元問題(docx和doc的暫未解決)三個地方。
下面將分別介紹三者如何實現。
python大批量讀寫.doc檔案的解決方案 - csdn部落格
注意:要提前安裝pypewin32庫
python+wordcloud+jieba+docx生成中文詞云和詞頻統計 - csdn部落格
一句話總結:
docx庫的使用可以讓我們得到docx檔案的str內容,這樣我們就可以用jieba庫來進行分詞了
提供的鏈結是乙個很好的實戰例子,裡面編寫的函式大多可以稍加修改後直接使用。
特別注意:
分詞是為了後續詞頻的統計,對於詞頻的統計,jieba分詞會產生大量的無意義詞彙(可理解成普遍性存在,不能代表文章特殊性的詞彙)。對於我們的詞頻處理是很不好的。之前我都是粗暴的人工篩選幾遍排除掉一些無意義詞彙。這篇文章裡則提供了一種中文停用詞表的存在。附鏈結如下 最全中文停用詞表整理(1893個) - csdn部落格
複製後貼上到txt檔案後儲存,注意此時不能直接使用,直接儲存後的字元含有一些無用的空格,需要我們進行處理。
處理方法也很簡單,呼叫str=str.strip()方法就能刪去無用的空格。
stop_words = open('stopwords1893.txt')
stop_words_text = stop_words.read()
stop_words.close()
stop_words_text_list = stop_words_text.split('\n')
for i in range(len(stop_words_text_list)):
stop_words_text_list[i]=stop_words_text_list[i].strip()
讀取docx檔案內容
def readdocument(strfile):
'''獲取文件物件,將文件內容按段落讀入,並存入doc中
'''file = docx.document(strfile)
doc = ""
for para in file.paragraphs:
doc = doc + para.text
return doc
讀取txt中內容def readtxt(strfile):
file=open(strfile,errors="ignore").read()
txt=file
return txt
然後我進行了一下測驗,正常檔案可以,但是含有特殊字元的就會報錯,查閱相關資料後發現解決方法大致有在open(file)時加入encoding條件,如open(file,encoding="utf-8")或者open(file,errors="ignore")兩種方法。前者是改變編碼,後者是當發現有非法字元是採取忽略,不報錯。
聯絡到自己的實際專案,我對分詞的內容是基於文字的,識別不出來的非法字元對我沒有什麼卵用,故而我採取忽略策略。**如上。
python 開啟檔案與讀寫檔案
usr bin python encoding utf8 with 語句不只是針對檔案而言的,它是乙個用來建立執行時環境的通用框架 genericframework 告訴物件它們正在進入和離開乙個執行時環境。print u9fa5 print u003f 建立檔案並寫入內容 with open te...
python建立檔案時去掉非法字元的方法
windows系統中檔名不能包含 想要建立必須過濾掉這些字元 def setfiletitle self,title filename re.sub lifuklt tiwww.cppcns.comtle 去掉非法字元 self.file open filename txt w 利用正則去掉非法的字...
python檔案讀寫與編碼解碼
最近接觸到python的檔案讀寫與編碼解碼,非常頭疼,下面寫一下最近的思考 目的為 分析在ide中將中文字串以預設編碼寫入txt檔案,在windows系統下修改txt檔案的編碼,在ide中重新開啟此txt出現錯誤的原因 ide的預設編碼是utf 8 系統的預設編碼是ansi 對於以下 str 奧森山...