在Python中将NLTK FreqDist的结果作为行写入.csv文件
我试图根据python列表中的单词集合,写出文本文件中特定单词的频率计数结果(我没有将其包括在代码列表中,因为有几百个) 我的问题是将在Python中将NLTK FreqDist的结果作为行写入.csv文件,python,python-3.x,csv,nltk,export-to-csv,Python,Python 3.x,Csv,Nltk,Export To Csv,我试图根据python列表中的单词集合,写出文本文件中特定单词的频率计数结果(我没有将其包括在代码列表中,因为有几百个) 我的问题是将fdist[m]作为一行写入.csv文件。它正在生成一个错误 _csv.Error: iterable expected, not int 我如何重新编写此文件以将频率分布放入.csv文件中的一行中 提前感谢您有两种选择-使用writerow而不是writerows,或者先创建一个值列表,然后将其传递给writerows。writerows而不是fdist[m]
fdist[m]
作为一行写入.csv文件。它正在生成一个错误
_csv.Error: iterable expected, not int
我如何重新编写此文件以将频率分布放入.csv文件中的一行中
提前感谢您有两种选择-使用
writerow
而不是writerows
,或者先创建一个值列表,然后将其传递给writerows。writerows
而不是fdist[m]
。现在,列表中的每一行值都应该是一个元组(或一个interable)。因此,要使writerows
正常工作,您必须再次将其封装在元组中:
writer.writerows([(fdist[m],)])
这里,逗号表示一个1值元组
要将所有值写入一行而不是此代码,请执行以下操作:
for m in word_list:
print(CIK, [fdist[m]], end='')
writer.writerows([fdist[m]])
你应使用:
for m in word_list:
print(CIK, [fdist[m]], end='')
writer.writerows(([fdist[m] for m in word_list],))
请注意一个清单。
另一方面,仅通过查看您的代码,在我看来,您可以在不涉及
NLTK
library的情况下,通过使用标准库执行相同的操作。它是FreqDist
类中的底层容器。它正在写入正确的值,但在单独的行(列中)上。我需要的是在一行中写入计数,但在.csv文件中写入单独的单元格。我使用NLTK来实现这一点,因为我们稍后将更多地使用它进行TF-IDF计算。此外,这段代码将构建一个文本文件的语料库,我实际上需要它来计算目录中每个文本文件中出现的单词数。我将CIK编号与FreqDist连接到文件中,如下面所示:writer.writerows(([val]+[f_dist[m]表示word_列表中的m])```但它只是写出目录中最后一个文件的频率分布。这是python的缩进问题还是有其他原因?
for m in word_list:
print(CIK, [fdist[m]], end='')
writer.writerows(([fdist[m] for m in word_list],))