当前位置:   article > 正文

Python读写文件与非法字符处理_统计读取文件时非法字符

统计读取文件时非法字符

项目需要对一些如doc、docx、txt等常见格式的文件进行分词处理,之前只用Python的jieba库进行过简单的中文分词,效果不错,但是只能读取txt文件,功能受限。今天查阅了一些论坛,将doc转换为docx,成功读取docx文件并分词,并解决了txt读取的非法字符问题(docx和doc的暂未解决)三个地方。

下面将分别介绍三者如何实现。

一、将doc转换为docx

参照链接:
python大批量读写.doc文件的解决方案 - CSDN博客

注意:要提前安装pypewin32库

二、读取docx文件并分词

参照链接:
Python+wordcloud+jieba+docx生成中文词云和词频统计 - CSDN博客
https://blog.csdn.net/fengjianc/article/details/78929121

一句话总结:
docx库的使用可以让我们得到docx文件的str内容,这样我们就可以用jieba库来进行分词了

提供的链接是一个很好的实战例子,里面编写的函数大多可以稍加修改后直接使用。

特别注意:
分词是为了后续词频的统计,对于词频的统计,jieba分词会产生大量的无意义词汇(可理解成普遍性存在,不能代表文章特殊性的词汇)。对于我们的词频处理是很不好的。之前我都是粗暴的人工筛选几遍排除掉一些无意义词汇。这篇文章里则提供了一种中文停用词表的存在。附链接如下  最全中文停用词表整理(1893个) - CSDN博客
https://blog.csdn.net/shijiebei2009/article/details/39696571。
复制后粘贴到txt文件后保存,注意此时不能直接使用,直接保存后的字符含有一些无用的空格,需要我们进行处理。
处理方法也很简单,调用str=str.strip()方法就能删去无用的空格。
 
 
  1. stop_words = open('stopwords1893.txt')
  2. stop_words_text = stop_words.read()
  3. stop_words.close()
  4. stop_words_text_list = stop_words_text.split('\n')
  5. for i in range(len(stop_words_text_list)):
  6. stop_words_text_list[i]=stop_words_text_list[i].strip()

三、txt读取的非法字符问题

仿照上一个链接中读取docx文件str内容的方法,我改写了读取txt中内容的方法。
读取docx文件内容
  1. def readDocument(strFile):
  2. '''
  3. 获取文档对象,将文档内容按段落读入,并存入doc中
  4. '''
  5. file = docx.Document(strFile)
  6. doc = ""
  7. for para in file.paragraphs:
  8. doc = doc + para.text
  9. return doc
读取txt中内容
  1. def readTxt(strFile):
  2. file=open(strFile,errors="ignore").read()
  3. txt=file
  4. return txt

然后我进行了一下测验,正常文件可以,但是含有特殊字符的就会报错,查阅相关资料后发现解决方法大致有在open(file)时加入encoding条件,如open(file,encoding="utf-8")或者open(file,errors="ignore")两种方法。前者是改变编码,后者是当发现有非法字符是采取忽略,不报错。
联系到自己的实际项目,我对分词的内容是基于文字的,识别不出来的非法字符对我没有什么卵用,故而我采取忽略策略。代码如上。





声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/895640
推荐阅读
相关标签
  

闽ICP备14008679号