import jieba from openpyxl import load_workbook from pyecharts.charts import WordCloud wb= load_workbook("D:\\行业信息.xlsx") ws=wb["行业信息"] def info_analysis( ws, col): ''' 返回xlsx工作表中某一列分词后的统计结果 :param ws:工作表 :param col:工作表中的某列 :return:分词字典,键值分别表示分词及其出现的次数 ''' col_list=[ item.value for item in ws[ col][1:]]#表示工作表 ws 第 col 列的数据,并去掉表头 col_str=",". join( col_list) #将列表合并成字符串 words= jieba.lcut( col_str) #对字符串进行分词 lcut_dict={} #用于统计分词的字典 for word in words: if Len(word) ==1: #分词长度为1时不予统计 continue else: lcut_dict[word]= lcut_dict.get(word,0)+1 require_dict= info_analysis( ws,"E") #对招聘要求进行分词统计 welfare_dict= info_analysis( ws,"F") #对企业福利进行分词统计 require_wc=(WordCloud( ) #绘制词云图存储在require. html中 .add("招聘要求",require_dict.items( )) .render("D:\\require.html") ) welfare_wc=(WordCloud( ) #绘制词云图存储在welfare. html中 .add("企业福利",welfare_dict.items( )) .render("D:\\welfare.html") ) print("词云图绘制成功") return lcut_dict 报错
时间: 2024-02-23 15:56:54 浏览: 78
在这段代码中,有两个函数调用 info_analysis() 是在函数体内部,这会导致递归调用,从而导致函数无限调用自己,最终导致栈溢出报错。您需要将这两个函数调用放到函数外部,或者将 info_analysis() 函数定义在外部。此外,代码中还有一些语法错误,例如缺少冒号、大小写拼写错误等,请您检查一下代码。
相关问题
import jieba from openpyxl import load_workbook from pyecharts.charts import WordCloud wb= load_workbook("D:\\行业信息.xlsx") ws=wb["行业信息"] def info_analysis( ws, col): ''' 返回xlsx工作表中某一列分词后的统计结果 :param ws:工作表 :param col:工作表中的某列 :return:分词字典,键值分别表示分词及其出现的次数 ''' col_list=[ item.value for item in ws[ col][1:]]#表示工作表 ws 第 col 列的数据,并去掉表头 col_str=",". join( col_list) #将列表合并成字符串 words= jieba.lcut( col_str) #对字符串进行分词 lcut_dict={} #用于统计分词的字典 for word in words: if Len(word) ==1: #分词长度为1时不予统计 continue else: lcut_dict[word]= lcut_dict.get(word,0)+1 require_dict= info_analysis( ws,"E") #对招聘要求进行分词统计 welfare_dict= info_analysis( ws,"F") #对企业福利进行分词统计 require_wc=(WordCloud( ) #绘制词云图存储在require. html中 .add("招聘要求",require_dict.items( )) .render("D:\\require.html") ) welfare_wc=(WordCloud( ) #绘制词云图存储在welfare. html中 .add("企业福利",welfare_dict.items( )) .render("D:\\welfare.html") ) print("词云图绘制成功") return lcut_dict 修改代码
您需要将函数调用放到函数外部或将函数定义在外部,可以按照以下代码进行修改:
```python
import jieba
from openpyxl import load_workbook
from pyecharts.charts import WordCloud
def info_analysis(ws, col):
'''
返回xlsx工作表中某一列分词后的统计结果
:param ws:工作表
:param col:工作表中的某列
:return:分词字典,键值分别表示分词及其出现的次数
'''
col_list = [item.value for item in ws[col][1:]] #表示工作表 ws 第 col 列的数据,并去掉表头
col_str = ",".join(col_list) #将列表合并成字符串
words = jieba.lcut(col_str) #对字符串进行分词
lcut_dict = {} #用于统计分词的字典
for word in words:
if len(word) == 1: #分词长度为1时不予统计
continue
else:
lcut_dict[word] = lcut_dict.get(word, 0) + 1
return lcut_dict
wb = load_workbook("D:\\行业信息.xlsx")
ws = wb["行业信息"]
require_dict = info_analysis(ws, "E") #对招聘要求进行分词统计
welfare_dict = info_analysis(ws, "F") #对企业福利进行分词统计
require_wc = (WordCloud() #绘制词云图存储在require. html中
.add("招聘要求", require_dict.items())
.render("D:\\require.html")
)
welfare_wc = (WordCloud() #绘制词云图存储在welfare. html中
.add("企业福利", welfare_dict.items())
.render("D:\\welfare.html")
)
print("词云图绘制成功")
```
另外,注意到代码中 `Len` 应该为 `len`,大小写拼写错误会导致程序报错。
解释这个代码import openpyxl, jieba, wordcloud import matplotlib.pyplot as plt from PIL import Image import numpy as np wb = openpyxl.load_workbook('豆瓣短评爬虫_电影、图书_哆啦A梦 伴我同行2.xlsx') ws = wb.active content = '' for row in range(2, ws.max_row+1): content += ws.cell(row, 7).value t_1 = jieba.lcut(content) t_2 = ''.join(t_1) f_1 = open('stopwords.txt', 'r', encoding='utf-8') s_list = [] for i in f_1.readlines(): s_list.append(i.strip()) for line in s_list: t_2 = t_2.replace(line, '') photo = np.array(Image.open('皮卡丘.jpg')) tu = wordcloud.WordCloud(font_path='STKAITI.TTF', colormap='cool', background_color='white', mask=photo) tu.generate(t_2) tu.to_file('tu2.jpg') plt.imshow(tu) plt.axis('off') plt.show()
这段代码是一个Python程序,它使用了openpyxl、jieba、wordcloud、matplotlib.pyplot和PIL等库。程序的功能是读取一个名为“豆瓣短评爬虫_电影、图书_哆啦A梦 伴我同行2.xlsx”的Excel文件,提取其中第7列的内容,并使用jieba库进行分词处理。接着,程序读取一个名为“stopwords.txt”的文本文件,将其中的停用词去除。最后,程序使用wordcloud库生成一个名为“tu2.jpg”的词云图,并使用matplotlib.pyplot库将其显示出来。