小编典典

如何在python中计算文件中的单词频率

python

我有一个具有以下格式的.txt文件,

C
V
EH
A
IRQ
C
C
H
IRG
V

尽管显然它要大得多,但实际上是这样。基本上,我试图总结每个单独字符串在文件中的次数(每个字母/字符串在单独的一行上,因此从技术上讲文件是C \ nV \
nEH \ n等。但是,当我尝试将这些文件转换为列表,然后使用count函数时,它会分离出字母,以使诸如’IRQ’之类的字符串为[‘\ n’I’,’R’
,’Q’,’\ n’],这样当我计算它时,我得到每个字母的频率,而不是字符串的频率。

这是我到目前为止编写的代码,

def countf():
    fh = open("C:/x.txt","r")
    fh2 = open("C:/y.txt","w")
    s = []
    for line in fh:
        s += line
    for x in s:
        fh2.write("{:<s} - {:<d}".format(x,s.count(x))

我最后想要的是一个看起来像这样的输出文件

C  10
V  32
EH 7
A  1
IRQ  9
H 8

阅读 250

收藏
2020-12-20

共1个答案

小编典典

使用Counter(),并使用strip()删除\n

from collections import Counter
with open('x.txt') as f1,open('y.txt','w') as f2:
    c=Counter(x.strip() for x in f1)
    for x in c:
        print x,c[x]   #do f2.write() here if you want to write them to f2

输出:

A 1
C 3
EH 1
IRQ 1
V 2
H 1
IRG 1
2020-12-20