python 中的计数器未显示所有单词

Counter in python not showing all words

A 有一个 csv 文件,我想要 所有 文件中包含的单词的字数统计在一个单独的 CSV 中,列为单词,计数。

所以我写的python脚本如下:

#!/usr/bin/python
from collections import Counter
import pandas

wordslist = []
f = open('Sample.csv')
for word in f.read().split():
    wordslist.append(word)

Freq = Counter(wordslist)

A = Freq.items()

# for item in Freq.items(): 
#   print(item)

# print len(Freq)

pd = pandas.DataFrame(A)
pd.to_csv("WordCounter.csv", header=False, encoding='utf-8')

csv中的字数是6672,我查到如下:

cat Sample.csv | wc -w

但是,我假设我的脚本的输出 csv 中的行数也应该等于 6672(即我的输入文件中的总字数 Sample.csv)作为每个字及其计数存储在输出文件的一行中。

但是,好像是1036比6672低:

cat WordCounter.csv | wc -l

我错过了什么?

每个 UNIQUE 单词在输出文件的一行中存储一次。您的文件中没有 6672 个唯一单词。如果有输出文件将是:

word0 | 1
word1 | 1
word2 | 1

而实际上是:

word0 | 10
word1 | 5
word2 | 2

你可能还应该去除标点符号等以获得你真正想要的,否则会发生这种情况:

word0  | 4
word0, | 2
word0. | 3

编辑:您还可以稍微简化一下代码:

替换

wordslist = []
f = open('Sample.csv')
for word in f.read().split():
    wordslist.append(word)

与:

with open('Sample.csv') as f:
    wordslist = f.read().split()