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

python读取PDF、word文件及jieba分词,词云分析(Jupyter) 用pdf文件解析器读取文件首先要安装pdfplumber库代码如下!pip install pdfplumber -i https://pypi.tuna.tsinghua.edu.cn/simple上面的代码安装可能会报错这时我们需要输入以下代码#!pip --default-timeout100 install --user pdfplumber -i https://pypi.tuna.tsinghua.edu.cn/simple输入以上代码能解决大部分问题import pdfplumber #导入库 #用pdf文件解析器读取文件 with pdfplumber.open(rC:\Users\bai\Downloads\新时代内地高校港澳学生国情教育模式研究_张小欣.pdf) as f: #用for循环读取文件中的每一页 for page in f.pages: text page.extract_text() txt_f open(r港澳国情教育.txt,modea,encodingutf-8) #创建txt文件 txt_f.write(text) #写入txt文件执行完上面代码我们得到txt样式的文本了。接下来读取word文件同样我们需要安装python-docx第三方库!pip install python-docx接下来读取文件import xlsxwriter as xw f docx.Document(rC:\Users\bai\Downloads\新时代内地高校港澳学生国情教育模式研究_张小欣.docx) for para in f.paragraphs: #用for循环读取文件每一段 txt_f open(r港澳国情教育.txt,modea,encodingutf-8) #创建txt文件 txt_f.write(para.text) #写入txt文件 #print(para.text)使用jieba分词库进行文本处理import jieba file open(港澳国情教育.txt,encodingutf-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(keylambda x: x[1], reverseTrue) # 根据词语出现的次数进行从大到小排序将统计好的词语及其出现的次数写入excelimport 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(width1000,height700,background_colorwhite,font_pathmsyh.ttc,scale15,stopwordssetlist) #将string变量传入generate()方法给词云输入文字 wcd.generate(string) wcd.to_image() 查看词云图片 wcd.to_file(词云.png) #导出图片