当前位置:   article > 正文

python实验 模块(运用jieba,词云wordcloud)_pip install python-docx jieba wordcloud

pip install python-docx jieba wordcloud

笔记。

首先需要下载jieba和wordcloud:

win+r打开cmd或者Anaconda Prompt,输入以下代码:

  1. pip install jieba
pip install wordcloud

下载stopwords和hlm文本文件的时候记得将编码设为:

 防止和代码冲突:

 

1.统计红楼梦人物的出现次数,输出出现次数最多的五个人;

  1. import jieba
  2. path = "C://Users//lzx//Desktop//hlm.txt" #绝对路径
  3. txt = open(path , 'r' , encoding = 'utf-8').read()#.read()实现全部读取,返回str类型
  4. # 精确分词
  5. txt1 = jieba.lcut(txt)#返回列表
  6. # txt1 = jieba.lcut(txt , cut_all = True) 返回所有可能 , 存在冗余
  7. book = {}
  8. #屏蔽掉无效词
  9. mapp1 = ["什么" , "一个" , "我们" , "那里" , "如今" , "你们" , "姑娘" , "起来" , "这里" , "老太太" , "说到" , "知道" ,"出来" ,"他们" , ""]
  10. mapp2 = ["说道" , "众人" , "奶奶" , "自己" , "一面" , "太太" , "只见" , "两个" , "怎么" , "没有" , "不是" , "不知" , "这个" , "听见"]
  11. for word in txt1:
  12. if((len(word) == 1) or (word in mapp1) or (word in mapp2)):
  13. continue;
  14. else:
  15. book[word] = book.get(word , 0) + 1;#字典类型中get函数贼好用
  16. #把字典中的元素以元组的形式放到列表中去
  17. l1 = list(book.items())
  18. # 排序
  19. l1.sort(key = lambda x : x[1] , reverse = True)#reverse为反转,默认升序
  20. #输出前五的人物
  21. for i in range(5):#range里面只能是数字(int)
  22. t = l1[i]
  23. print("{0:<10}{1:>5}".format(t[0],t[1]))
  24. #也可以print("{:<10}{:>5}".format(t[0],t[1]))
  25. #也可以:
  26. #x,y=l1[i].items() 这种写法可效仿
  27. #print("{0:<10}{1:>5}".format(x,y))
  28. # < > 是指左对齐 还是 右对齐 后面的数字是指占几位
  29. #可以在 "< >" 号前面写上占位符(如*),默认空格
  30. #至于本例中01是字典类型输出的一种格式,去掉01也可

 

2.制作红楼梦人物词云;

  1. import wordcloud as wd
  2. import jieba
  3. path = "C://Users//lzx//Desktop//hlm.txt"
  4. pathx = "C://Users//lzx//Desktop//stopwords_cn.txt"
  5. txt = open(path , 'r' ,encoding = 'utf-8').read()#string类型
  6. l1 = open(pathx , 'r',encoding = 'utf-8' ).read()#string类型
  7. #把 无用词文本 转换成列表
  8. ls = list(l1.split())
  9. txt = jieba.lcut(txt)#返回的是列表
  10. # 可实现删除功能,如:“刘备曰”变成“刘备”,也可以不用
  11. # =============================================================================
  12. # for i in range(len(txt)):#range里面只能是数字(int)
  13. # txt[i] = txt[i].replace('道' , '')
  14. # txt[i] = txt[i].replace('笑' , '')
  15. # txt[i] = txt[i].replace('听了' , '')
  16. # txt[i] = txt[i].replace('曰' , '')
  17. # =============================================================================
  18. w = wd.WordCloud(width = 1000 , height = 800, font_path='C://Windows//Fonts//simsun' ,stopwords = ls , background_color="white")
  19. # font_path 是文字样式,最后的simsun在右击属性中查看,如果出现方框而没有文字的情况,说明字体选的不合适
  20. # stopwords 是去除文字集 传入格式是列表
  21. w.generate(" ".join(txt))
  22. # 连结成一个字符串用空格分割
  23. w.to_file("C://Users//lzx//Desktop//worldcloud.png")
  24. # 生成图片到桌面

 3.三国的和红楼梦的要求差不多,但没有给stopwords文档

  1. import wordcloud as wd
  2. import jieba
  3. path = "C://Users//lzx//Desktop//三国演义.txt"
  4. #pathx = "C://Users//lzx//Desktop//stopwords_cn.txt"
  5. txt = open(path , 'r' ,encoding = 'utf-8').read()#string类型
  6. txt = jieba.lcut(txt)#返回的是列表
  7. mp=['商议','何不','却说','不可','今日','不能','原来','于是','次日','大喜','大怒','大败','二人','左右','汉中''一人','此人','何故']
  8. txt1=[]
  9. for i in txt:
  10. if len(i)!=1:
  11. txt1.append(i)
  12. for i in range(len(txt1)):
  13. txt1[i] = txt1[i].replace('之' , '')
  14. txt1[i] = txt1[i].replace('曰' , '')
  15. w = wd.WordCloud(width = 1000 , height = 800, font_path='C://Windows//Fonts//simsun' ,stopwords=mp, background_color="white")
  16. # font_path 是文字样式,最后的simsun在属性中查看,如果出现方框而没有文字的情况,说明字体选的不合适
  17. w.generate(" ".join(txt1))
  18. # 连结成一个字符串用空格分割
  19. w.to_file("C://Users//lzx//Desktop//三国演义.png")
  20. # 生成图片到桌面

 至于去除文字集,你可以多删一些词来完善,我懒得弄了。

另外,记录一个小知识:

输出:(9,-2) 

 

 

 

改正:

不知道为啥,这样都不行。

正确改正:

 

 

最后:

  1. def countV(a):
  2. if isinstance(a,int):
  3. return a
  4. else:
  5. return max(a),min(a)#python函数可以返回多个,且被打包成元组。
  6. l=[1,4,7,-2,9]
  7. print(countV(l))
  8. print(countV(4))

 

 

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号