2014-10-08 79 views
0

我有一個關於如何查找字符串文件(特別是FASTA文件)中字符串(特別是DNA序列)完全匹配數的問題。我想要做的就像命令行中的「grep -c」字符串「file_of_strings.fasta」。我的代碼如下:查找文件python中字符串的完全匹配數

count = 0 
for line in open("sequences.fasta"): 
    if sequence in line: 
     count += 1 

這似乎並不被計算在我的文件中的特定字符串的實例的數量,我不知道是什麼原因。任何幫助將非常感激!

那麼,這麼一個FASTA文件的格式爲:

>SEQUENCE_1 
MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG 
LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK 
IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL 
MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGLEKKTEDFAAEVAAQL 
>SEQUENCE_2 
SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI 
ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH 
+0

嗯似乎是正確的名單。你是不是在找子吧? – brunsgaard 2014-10-08 04:00:12

+0

你是否假設每行只有一次發生? – User 2014-10-08 04:03:37

回答

1
with open('file') as f: 
    print(f.read().count(sequence)) 
+0

所以我可以這樣做:count = f.read()。count(sequence)? – user439463 2014-10-08 04:23:52

+0

是的..嘗試一下;) – brunsgaard 2014-10-08 04:24:57

0

使用正則表達式(如果你不是假設每行一個比賽,你的代碼假定每行一個匹配):

import re 
f = open("sequences.fasta") 
print len(re.findall(sequence, f.read())) 
f.close() 
  1. 閱讀文件作爲字符串
  2. 外觀使用re.findall WH比賽ICH將返回一個包含匹配
  3. 從步驟計算列表的長度2