TypeError: can only join an iterable的解决思路
一、问题描述
筛选all_seg.txt中的词语,去停用词,相关代码如下:
pkutest = [line.strip() for line in open ('all_seg.txt','r',encoding = 'utf-8').readlines()] #GBK编码:是指中国的中文字符,其中它包含了简体中文与繁体中文字符,另外还有一种字符“gb2312”,这种字符仅能存储简体中文字符。 #UTF-8编码:它是一种全国家通过的一种编码,如果你的网站涉及到多个国家的语言,那么建议你选择UTF-8编码,适用于国际化。 final=[] for n in pkutest: res=[] for n2 in n.split(" "): if n2 not in stopwords: res.append(n2) final.append(res)复制代码
查看变量final里的内容,情况如下:
使用DataFrame来表示表格式的数据,看起来会更直观一些,再查看一下final:
将变量final里写入到tingci.txt文件中,结果却报错:TypeError: can only join an iterable
二、报错分析与解决
报错原因是join括号里需要一个可迭代的值,可是final是一个字符串列表,怎么就不行了呢?
真的是这样吗???使用final.dtypes查看一下
既然前面使用dataframe将final表格化过,那在进行for循环迭代之前将变量final强行转换为str类型就好啦 你以为问题就这样结束了吗?
当我运行下一步代码想要统计单词出现的频率次数并写入excel表格时,又报错了(你以为的你以为... ...
报错内容TypeError: 'int' object is not iterable
当你改完一个bug却又新增一个bug时,这能说明什么呢?说明问题并没有解决(这不是废话嘛)至少不是从问题源头上解决T_T
报错的内容很相似,好像都是输入类型错误导致不能迭代。这好像在暗示什么,思来想去,好像dataframe那一步代码有问题,因为final.dtypes查看结果显示都是object类型。
要不试试把代码语句final=pd.DataFrame(final)注释掉?因为这句的作用只是查看内容而言,对处理数据关系不大
再次运行之前的代码,运行成功~~~
作者:Inochigohan
链接:https://juejin.cn/post/7059014133659746317