Python如何输出某关键字符并输出完整字符串
发布网友
发布时间:2022-04-27 05:36
我来回答
共3个回答
热心网友
时间:2022-04-07 12:33
下边是实现的代码
# -*- coding: utf-8 -*-
fileFa = open("SEQ.FASTA", "r") # SEQ.FASTA为氨基酸序列文件
countName = 0
Seqlines = fileFa.readlines()
print u"共" + str(len(Seqlines)/2) + u"条序列" #统计共有多少条序列
for i in range (0,len(Seqlines)/2): #输出氨基酸序列名称
print Seqlines[2*i].strip('>\n'); #去掉">" 和 "换行"
fileFa.close()
解释:
首先你的氨基酸序列文件非常有规律的存放在SEQ.FASTA文件中,格式如下:
">"+氨基酸名称+换行+氨基酸序列+换行
使用fileFa.readlines()将会把文件中的记录全部读入到变量中,并且返回一个列表,列表的格式如下:
['>氨基酸名称\n', '氨基酸序列\n', '>qwe56_44606\n', '
KKERDIWTSXAHVTFAKERTQLAYTLRILVHITLSFEQLLEMEIGLAVGGAFLSSALNVLFDRLAPRGELLKMFQRGKHD
V\n']
所以,如果想获取氨基酸序列有多少条,只需要知道列表的长度后除以2即可。
而获取氨基酸序列名称,只需要输出序列中偶数的项即可。回答完毕,希望对您有所帮助。
追问谢谢 但是一般来说序列名是一行 但是序列都不是一行的 那怎么把那些序列都放在一行呢 一般一个文件都有几万条序列 肯定不能手动
或者还请你帮忙看一下后续的问题http://zhidao.baidu.com/question/1924164984543838947.html
追答楼上的方法就能解决你的问题,我就不多说什么了。
热心网友
时间:2022-04-07 13:51
python 3语法 如果你的python版本太老,可能不支持with语法、print函数,自己改下
热心网友
时间:2022-04-07 15:26
如果存在序列占用多行的情况:
import itertools
def file2dict(filename):
name = ""
content = ""
dct = {}
for ln in itertools.ifilter(None, itertools.imap(
lambda s: s.strip(),
open(filename, 'rt')
)):
if ln.startswith(">"):
if content:
dct[name] = content
name, content = ln[1:], ""
else:
content += ln
dct[name] = content
return dct
datadict = file2dict("SEQ.FASTA")
print "Total %d serial." % len(datadict)