创建一个包含两列的 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
我试图获得的输出应该只包含两列(一列用于 "word",一列用于 "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 |蟒蛇 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())
我编写了一个代码,用于计算给定文本文档中单词的出现次数,现在我想将输出保存在包含两列的 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
我试图获得的输出应该只包含两列(一列用于 "word",一列用于 "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 |蟒蛇 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())