Yang-Sen

1、什么是词云

就是将这个手通过文字填充起来

填充后的效果

我们今天就把咱们微信好友的个性签名全部获取到然后生成这么一个图

你们现在对微信的东西也有一定的了解了,咱们要做这个先分析下都要干什么

  • 登录微信
  • 获取所有微信好友的个性签名
  • 然后把这个性签名记录到一个地方
  • 把文本里的内容写到咱们图片中
  • 然后生成这个图片就行了

微信个性签名词云

准备工作

pip install wxpy
pip install matplotlib
pip install wordcloud
pip install Pillow
pip install numpy
pip install jieba

以上模块都安装完后咱们就按照咱们分析的来操作

第一步

from wxpy import *
bot = Bot()

第二步

import re
s = \'\'
friends = bot.friends()
for friend in friends:
    content = re.findall(r\'[一-覦]+\',friend.signature)
    s += \'\'.join(content)

第三步

f = open(\'s.txt\',\'w\',encoding=\'utf-8\')
f.write(s)
f.cloce()

第四步

import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS
from PIL import Image
import numpy as np
import jieba

abel_mask = np.array(Image.open("11.png"))
text_from_file_with_apath = open(\'signatures.txt\', encoding=\'utf-8\').read()
wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all=True)
wl_space_split = " ".join(wordlist_after_jieba)
stopwords = set(STOPWORDS)

第五步

path = \'/Users/guobaoyuan/PycharmProjects/weixin/方正楷体.TTF\'
wc = WordCloud(background_color="black",font_path=path, margin=5, max_words=2000, mask=abel_mask,
               stopwords=stopwords).generate(wl_space_split)

wc.to_file("alice.png")
plt.imshow(wc)
plt.axis("off")
plt.show()

这样我们就写完了,我把字体和图片给你们你们复制到咱们当前文件就行了

都实现了后,咱们就来看看这个图片是怎么生成的,和一些咱们不认识的代码都是什么意思

知识点讲解

content = re.findall(r\'[一-覦]+\',friend.signature) 

[一-覦]几乎把所有的中文都包含了

findall是从微信好友的签名中去查找中文一到中文覦的字存放在一个列表中

\'\'.join(content)

这样是将列表中的文字拼成一句话

f = open(\'s.txt\',\'w\',encoding=\'utf-8\')

这个是打开一个文件,文件名叫做s.txt 咱们明明没有这个文件 当打开文件的模式mode 是w的时候就表示创建一个s.txt文件,然后将内容写到s.txt文件中 w模式有个特点就是写之前先把s.txt中的内容先清空然后在写入内容,encoding是表示文件中的内容是以这个编码格式编写的

f.write(s)
f.cloce()

f就是咱们打开的文件,write是将咱们处理好的字符串写入文件中

f.cloce这个是将咱们打开的文件关闭

abel_mask = np.array(Image.open("11.png"))

打开我们生成的图片模板

text_from_file_with_apath = open(\'signatures.txt\', encoding=\'utf-8\').read()

打开我们写好的好友个性签名然后读取出来

wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all=True)

把我们的个新签名使用jieba分词器找到词语和单个的文字

wl_space_split = " ".join(wordlist_after_jieba)

然后将我们组合的词语和文字在拼接起来

stopwords = set(STOPWORDS)

这个是过滤敏感词汇

path = \'/Users/guobaoyuan/PycharmProjects/weixin/方正楷体.TTF\'

这个是指定我们词云要显示的文字的字体

wc = WordCloud(background_color="black",font_path=path, margin=5, max_words=2000, mask=abel_mask,
               stopwords=stopwords).generate(wl_space_split)

生成我们的词云图片,参数如下:

  • background_color="black" 背景颜色
  • font_path = path 文字的字体
  • margin = 边缘大小
  • max_words = 最大词汇量
  • mask=abel_mask 图片模块形状
  • stopwords=stopwords 铭感词
  • generate 将我们拼接好的内容生成
wc.to_file("alice.png")
plt.imshow(wc)
plt.axis("off")
plt.show()

wc.to_file 生成的文件是alice.png

plt.imshow 绘画这个图片

plt.axis("off") 不显示坐标轴

plt.show() 展示我们绘画的词云图片

分类:

技术点:

相关文章: