赞
踩
首先要安装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
输入以上代码能解决大部分问题
- import pdfplumber #导入库
-
- #用pdf文件解析器读取文件
- with pdfplumber.open(r'C:\Users\bai\Downloads\新时代内地高校港澳学生国情教育模式研究_张小欣.pdf') as f:
- #用for循环读取文件中的每一页
- for page in f.pages:
- text = page.extract_text()
- txt_f = open(r'港澳国情教育.txt',mode='a',encoding='utf-8') #创建txt文件
- txt_f.write(text) #写入txt文件
执行完上面代码我们得到txt样式的文本了。
同样我们需要安装python-docx第三方库
!pip install python-docx
接下来读取文件
- import xlsxwriter as xw
- f = docx.Document(r"C:\Users\bai\Downloads\新时代内地高校港澳学生国情教育模式研究_张小欣.docx")
-
- for para in f.paragraphs: #用for循环读取文件每一段
- txt_f = open(r'港澳国情教育.txt',mode='a',encoding='utf-8') #创建txt文件
- txt_f.write(para.text) #写入txt文件
- #print(para.text)
- import jieba
- file = open('港澳国情教育.txt',encoding='utf-8')
- file = file.read() #读取txt文件
- txtlist = jieba.lcut(file) # 使用精确模式对文本进行分词
- string = " ".join(txtlist) #列表转化为字符串,绘制词云要传入的对象是字符串
- #string
- stop_words = {} #通过键值对的形式存储要排除的词及出现次数
- counts = {} # 通过键值对的形式存储词语及其出现的次数
- for txt in txtlist:
- if len(txt) == 1: # 单个词语应该排除
- stop_words[txt] = stop_words.get(txt,0) + 1
- else:
- counts[txt] = counts.get(txt, 0) + 1 # 遍历所有词语,每出现一次其对应的值加 1
-
- items = list(counts.items())
- items.sort(key=lambda x: x[1], reverse=True) # 根据词语出现的次数进行从大到小排序
- import xlsxwriter as xw #导入第三方库
- #根据词语出现的次数进行从大到小排序,并写入excel
- workbook = xw.Workbook('词频.xlsx') # 创建工作簿
- worksheet1 = workbook.add_worksheet("sheet1") # 创建子表
- worksheet1.activate() # 激活表
- title = ['词语', '词频', ] # 设置表头
- worksheet1.write_row('A1', title) # 从A1单元格开始写入表头
- i = 2 # 从第二行开始写入数据
- for j in range(len(items)):
- insertData = [items[j][0], items[j][1]] #获取items里面的每个元素,items每个元素为元组,[j][0]表示第j个元组中的第1个元素
- row = 'A' + str(i)
- worksheet1.write_row(row, insertData)
- i += 1
- workbook.close() # 关闭表
- stoplist=[] #创建排除单个词的列表
- item = list(stop_words.items())
- for i in range(len(item)): #遍历列表中所有的字典
- txt,count = item[i]
- stoplist.append(txt) #将key添加到要排除的列表
- #print(stoplist)
- setlist = set(stoplist) #将列表转化为集合,后面WordCloud()方法的stopwords传入的参数要求为集合
- from wordcloud import WordCloud
-
- wcd = WordCloud(width=1000,height=700,background_color='white',font_path='msyh.ttc',scale=15,stopwords=setlist)
- #将string变量传入generate()方法,给词云输入文字
- wcd.generate(string)
- wcd.to_image() 查看词云图片
- wcd.to_file('词云.png') #导出图片
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。