我在文本文件中有以下格式。
-FRFR
YOUAREMYFRIEND
-JKJK
YOUARENOTMYFRIEND
-SSFF
LETUSBEFRIENDS
我想计算一行中没有以" - "开头的每个字母的频率。它是一个巨大的文件,所以我不能只是复制。
无论如何我能做到
for line in str
if line starts with '-'
then dont count that line
else:
do count the line
total_length = 0
nucleotide = {}
seq_file = open("file.txt", "r")
for raw_line in seq_file:
line = raw_line.rstrip("\r\n")
length = len(line)
for nuc in line:
if nucleotide.has_key(nuc):
nucleotide[nuc] += 1
else:
nucleotide[nuc] = 1
total_length += length
seq_file.close()
答案 0 :(得分:7)
您可以使用collections.Counter():
from collections import Counter
results = Counter()
with open('input.txt', 'r') as f:
for line in f:
if line.startswith('-'):
continue
results.update(line)
print results
打印:
Counter({'E': 7, 'R': 5, 'N': 4, 'Y': 4, 'D': 3, 'F': 3, 'I': 3, 'O': 3, 'U': 3, 'A': 2, '\n': 2, 'M': 2, 'S': 2, 'T': 2, 'B': 1, 'L': 1})
您还可以打印出最常见的项目,例如:
print results.most_common(3)
打印:
[('E', 7), ('R', 5), ('N', 4)]
答案 1 :(得分:0)
我认为它应该可以测试该行的第一个字符。例如:
if (line[0] != '-'): count +=1