碎碎念
刚刚开始学习python,觉得好玩就编了一个还挺友好的中英文词云小程序,用起来还算是方便,也还算是比较友好哒~
使用到了wordcloud
库和jieba
库(装wordcloud库的时候老出错,又不想加个c++。。后来才弄明白,原来是要经过编译才能用,从UCI页面上面找到对应的文件下载下来以后,把文件copy到python的文件夹里,再pip安装就好了~)
说不定以后就能用上呢,嘻嘻O(∩_∩)O
(今天刚在 CSDN 上注册了,账号是 qq_41757468。点击查看我在CSDN上写的博文 欢迎大家批评指正,或是来找我一起交流学习呀~
使用效果
词汇出现的次数越多,字号就越大~




小程序使用流程
简书似乎不能用markdown画流程图欸。。。只能把自己CSDN上写的截图下来了(手动狗头)


python代码
#中英文词云
print("运行前请确保已经安装 jieba库!")
import jieba
import wordcloud
#选择处理
def bgSetting(bg_flag):
if bg_flag=="1":
bgcolor="white"
elif bg_flag=="2":
bgcolor="black"
return bgcolor
def stopwordsSetting(ex_flag):
if ex_flag=="1":
print("请在此程序的源文件夹中建立:exclude.txt文件,并在该文本文件中输入需要排除的词汇,一行一个词汇!")
ex_f=open("exclude.txt","r")
ex_t=ex_f.read()
stopwords=ex_t.split()
ex_f.close()
else:
stopwords=[]
return stopwords
def addwordsSsetting(add_flag):
if add_flag=="1":
print("请在此程序的源文件夹中建立:add.txt文件,并在该文本文件中输入需要添加的词汇,一行一个词汇!")
add_f=open("add.txt","r")
add_t=add_f.read()
add_f.close()
addwords=add_t.split()
else:
addwords=[]
return addwords
#文档读写与处理
def readFile():
f = open("data.txt", "r")
t = f.read()
f.close()
return t
def ChineseWC(t):
add_flag=input("需要添加词汇请扣1,不需要添加词汇请按任意键继续:")
addwords=addwordsSsetting(add_flag)
if addwords !=[]:
for word in addwords:
jieba.add_word(word)
words = jieba.lcut(t)
txt = " ".join(words)
font="msyh.ttc"
return txt,font
def EngWC(t):
txt=t.replace("\n"," ")
return txt
#输入
def getInputs():
print("请将所需转换的TXT文件保存于此程序的源文件夹中,并且命名为:data.txt!")
print("输出的图片名称为:result.png,将保存于此文件的源文件夹中!")
w=int(input("请输入需要生成的图片宽度:"))
h=int(input("请输入需要生成的图片高度:"))
maxwords=int(input("请输入图片所含词汇的最大值:"))
ex_flag=input("需要排除词汇请扣1,不需要排除词汇请按任意键继续:")
bg_flag=input("需要生成白底图片请扣1,需要生成黑底图片请扣2:")
while bg_flag!="1" and bg_flag!="2":
bg_flag=input("需要生成白底图片请扣1,需要生成黑底图片请扣2,其他输入为无效输入!")
language_flag=input("中文词云请扣1,英文词云请扣2:")
while language_flag!="1" and language_flag!="2":
language_flag=input("中文词云请扣1,英文词云请扣2,其他输入为无效输入!")
bgcolor=bgSetting(bg_flag)
stopwords=stopwordsSetting(ex_flag)
return w,h,maxwords,stopwords,bgcolor,language_flag
#输出
def getImageC(w,h,bgcolor,font,maxwords,stopwords,txt):
wc= wordcloud.WordCloud( \
width =w, height =h,\
background_color = bgcolor,\
font_path =font,\
max_words=maxwords,\
stopwords=stopwords)
wc.generate(txt)
wc.to_file("result.png")
def getImageE(w,h,bgcolor,maxwords,stopwords,txt):
wc= wordcloud.WordCloud( \
width =w, height =h,\
background_color = bgcolor,\
max_words=maxwords,\
stopwords=stopwords)
wc.generate(txt)
wc.to_file("result.png")
#主函数
def main():
w,h,maxwords,stopwords,bgcolor,language_flag=getInputs()
t=readFile()
if language_flag=="1":
txt,font=ChineseWC(t)
getImageC(w,h,bgcolor,font,maxwords,stopwords,txt)
print("Sucessfully")
else:
txt=EngWC(t)
getImageE(w,h,bgcolor,maxwords,stopwords,txt)
print("Sucessfully")
try:
main()
except:
print("TAT")
网友评论