繁体   English   中英

创建具有两列的csv文件| 计数器模式

[英]Create a csv file with two columns | Counter mode

我编写了一个代码,用于计算给定文本文档中单词的出现次数,现在我想将输出保存在具有两列的csv文件中:一列用于单词,一列用于它们的频率。

这是我要复制的代码:

from collections import Counter
counter = Counter(['spam', 'egg', 'spam', 'egg', 'python', 'egg'])

with open('wordfile.csv', 'w') as f:
    writer = csv.writer(f, delimiter=' ')
    writer.writerow(('word', 'count'))
    writer.writerows(counter.most_common())     

但是,这是输出:

word countegg 3spam 2python 1

我尝试获取的输出应仅包含两列(一列代表“单词”,一列代表“ frequency”,每一行应包含一个单词及其在文本中的出现:

word, frequency,
the, 3165,
in, 1265,
of,1233,

当我用代码打印输出时:

print(open('wordfile.csv', 'rb').read())

我得到:

b'word count\r\r\negg 3\r\r\nspam 2\r\r\npython 1\r\r\n')

如您所见,单词和频率没有两列。 我正在使用Windows,这是我正在使用的Python版本:3.5.2 | Anaconda 4.1.1(64位)

writer.writerow期望该行的列列表; 在您的摘要中,您正在通过所有结果,即。 所有项目的所有列。

您需要遍历counter.items()以获得所需的结果:

import csv
from collections import Counter

counter = Counter(['spam', 'egg', 'spam', 'egg', 'python', 'egg'])

with open('wordfile.csv', 'w', newline='') as f:
    writer = csv.writer(f, delimiter=' ')
    writer.writerow(('word', 'count'))
    writer.writerows(counter.most_common())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM