簡體   English   中英

在python中計算頻率時忽略一條線

[英]Disregarding a line while calculating frequency in python

我在文本文件中有以下格式。

-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()

您可以使用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})

您還可以打印出 n 個最常見的項目,例如:

print results.most_common(3)

印刷:

[('E', 7), ('R', 5), ('N', 4)]

我認為應該可以測試該行的第一個字符。 例如:

if (line[0] != '-'): count +=1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM