Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中计算文件中的单词频率_Python - Fatal编程技术网

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

如何在python中计算文件中的单词频率,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 c

我有一个.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))

s+=line
更改为
s.extend(line.split())
+=
运算符用于将两个序列相加,字符串被视为一个字符序列。您可以使用
list.append
(例如,
s.append(line)
)将整行作为单个条目添加到列表中,或使用
list.extend
添加字符串列表

在本例中,我使用
line.split()
将行拆分为单个单词,然后将单词列表添加到当前列表中。如果每行仅包含一个单词,则可以使用
s.append(line)

使用,然后使用
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

如果您有Python
2.7
3.1
,但是
2.6
3.0
没有
集合,那么Ashwini的答案是好的。Counter


为了便于移植到这些旧版本,您最好使用。

是否必须使用python?
sort yourfile.txt | uniq-c
将提供字数(您提到c:\所以您似乎在windows上,
sort
uniq
是标准的unix命令,如果您安装cygwin或.@There from here-我认为OP需要字数计算。python代码以其书写方式生成字母计数。
sort
uniq
从技术上会生成行计数。不确定这是否正确。字数计算,只是其中一些单词碰巧由单个字母组成,这是用于生物学研究的.至于用python实现,that和R是我唯一熟悉的语言,我想在python@D.Shawley是的,很抱歉我误读了-只喝了一杯咖啡><删除了我的评论。@therefromhere-“word”不必是“英语单词”。不过,字符串对OP的使用会更好。这里有一个
collect离子。计数器
应该与2.5和2.6一起使用。此外,这个答案可能是一个注释。
A 1
C 3
EH 1
IRQ 1
V 2
H 1
IRG 1