当前位置:   article > 正文

python读取PDF、word文件及jieba分词,词云分析(Jupyter)_jieba 处理word文件

jieba 处理word文件

用pdf文件解析器读取文件

首先要安装pdfplumber库

代码如下:

!pip  install pdfplumber -i https://pypi.tuna.tsinghua.edu.cn/simple 

上面的代码安装可能会报错,这时我们需要输入以下代码:

#!pip --default-timeout=100 install --user pdfplumber -i https://pypi.tuna.tsinghua.edu.cn/simple 

输入以上代码能解决大部分问题

  1. import pdfplumber #导入库
  2. #用pdf文件解析器读取文件
  3. with pdfplumber.open(r'C:\Users\bai\Downloads\新时代内地高校港澳学生国情教育模式研究_张小欣.pdf') as f:
  4. #用for循环读取文件中的每一页
  5. for page in f.pages:
  6. text = page.extract_text()
  7. txt_f = open(r'港澳国情教育.txt',mode='a',encoding='utf-8') #创建txt文件
  8. txt_f.write(text) #写入txt文件

执行完上面代码我们得到txt样式的文本了。

接下来读取word文件

同样我们需要安装python-docx第三方库

!pip install python-docx

接下来读取文件

  1. import xlsxwriter as xw
  2. f = docx.Document(r"C:\Users\bai\Downloads\新时代内地高校港澳学生国情教育模式研究_张小欣.docx")
  3. for para in f.paragraphs: #用for循环读取文件每一段
  4. txt_f = open(r'港澳国情教育.txt',mode='a',encoding='utf-8') #创建txt文件
  5. txt_f.write(para.text) #写入txt文件
  6. #print(para.text)

使用jieba分词库进行文本处理

  1. import jieba
  2. file = open('港澳国情教育.txt',encoding='utf-8')
  3. file = file.read() #读取txt文件
  4. txtlist = jieba.lcut(file) # 使用精确模式对文本进行分词
  5. string = " ".join(txtlist) #列表转化为字符串,绘制词云要传入的对象是字符串
  6. #string

统计词语及其出现的次数

  1. stop_words = {} #通过键值对的形式存储要排除的词及出现次数
  2. counts = {} # 通过键值对的形式存储词语及其出现的次数
  3. for txt in txtlist:
  4. if len(txt) == 1: # 单个词语应该排除
  5. stop_words[txt] = stop_words.get(txt,0) + 1
  6. else:
  7. counts[txt] = counts.get(txt, 0) + 1 # 遍历所有词语,每出现一次其对应的值加 1
  8. items = list(counts.items())
  9. items.sort(key=lambda x: x[1], reverse=True) # 根据词语出现的次数进行从大到小排序

将统计好的词语及其出现的次数写入excel

  1. import xlsxwriter as xw #导入第三方库
  2. #根据词语出现的次数进行从大到小排序,并写入excel
  3. workbook = xw.Workbook('词频.xlsx') # 创建工作簿
  4. worksheet1 = workbook.add_worksheet("sheet1") # 创建子表
  5. worksheet1.activate() # 激活表
  6. title = ['词语', '词频', ] # 设置表头
  7. worksheet1.write_row('A1', title) # 从A1单元格开始写入表头
  8. i = 2 # 从第二行开始写入数据
  9. for j in range(len(items)):
  10. insertData = [items[j][0], items[j][1]] #获取items里面的每个元素,items每个元素为元组,[j][0]表示第j个元组中的第1个元素
  11. row = 'A' + str(i)
  12. worksheet1.write_row(row, insertData)
  13. i += 1
  14. workbook.close() # 关闭表

创建排除单个词的列表

  1. stoplist=[] #创建排除单个词的列表
  2. item = list(stop_words.items())
  3. for i in range(len(item)): #遍历列表中所有的字典
  4. txt,count = item[i]
  5. stoplist.append(txt) #将key添加到要排除的列表
  6. #print(stoplist)
  7. setlist = set(stoplist) #将列表转化为集合,后面WordCloud()方法的stopwords传入的参数要求为集合

创建词云对象,进行词云分析

  1. from wordcloud import WordCloud
  2. wcd = WordCloud(width=1000,height=700,background_color='white',font_path='msyh.ttc',scale=15,stopwords=setlist)
  3. #将string变量传入generate()方法,给词云输入文字
  4. wcd.generate(string)
  5. wcd.to_image() 查看词云图片
  6. wcd.to_file('词云.png') #导出图片

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/348390?site
推荐阅读
相关标签
  

闽ICP备14008679号