我有一个具有以下格式的.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
使用Counter(),并使用strip()删除\n:
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