Python如何输出某关键字符并输出完整字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python如何输出某关键字符并输出完整字符串相关的知识,希望对你有一定的参考价值。
我初学Python,想要写个计算氨基酸序列长度的Python脚本,自己写了一小段 就遇到问题
import re
fileFa = open("SEQ.FASTA", "r") # SEQ.FASTA为氨基酸序列文件
countName = 0
for Seqline in fileFa.readlines(): #匹配每一行开头是>
reSeqname = re.findall(">", Seqline)
if len(reSeqname) > 0:
countName = countName + reSeqname.count(">")
print "共" + str(countName) + "条序列" #统计共有多少条序列
print "seqname\n" , reSeqname\n
fileFa.close()
现在这个小脚本可以统计出有 几条序列 但是我想输出序列的名字reSeqname就输出的是[ ] 然后我将第五行修改成reSeqname = re.findall(">(.+)", Seqline) 或者是reSeqname = re.findall(">([\w\W]*)", Seqline)脚本就无法运行 不能统计条数了
请大家帮忙修整 最好能解释说明 谢谢
下面是四条氨基酸序列
>qwe56_869
XFSHNYIFFVCVQQLQXSEHIPQKNSPLPFTFLLTKER
>qwe56_44606
KKERDIWTSXAHVTFAKERTQLAYTLRILVHITLSFEQLLEMEIGLAVGGAFLSSALNVLFDRLAPRGELLKMFQRGKHDV
>qwe56_44514
XFLSILKVFTKLTKEHQDMNVNDLAKIIREFISKGGKCLIVLDDVWEPNVVHAIKEAFPKNKKGHRIMITTRDASVARYANAHPHSLKFLKDEESFQ
>qwe56_44424
XITYTLRYILLLLCAETFLFLSHLIMAYAAITSLMNTIQQSMQ
还有个后续问题http://zhidao.baidu.com/question/1924164984543838947.html 也悬赏有分哦
下边是实现的代码
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
楼上的方法就能解决你的问题,我就不多说什么了。
参考技术Apython 3语法 如果你的python版本太老,可能不支持with语法、print函数,自己改下
参考技术B
如果存在序列占用多行的情况:
import itertoolsdef 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)
python如何打印输出
参考技术A 使用print函数。print(*objects,sep='',end='\n',file=sys.stdout, flush=False)
objects -- 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
sep -- 用来间隔多个对象,默认值是一个空格。
end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
file -- 要写入的文件对象。
flush -- 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。
以上是关于Python如何输出某关键字符并输出完整字符串的主要内容,如果未能解决你的问题,请参考以下文章
Python 2.7 mediainfo --inform 输出完整信息而不是一个字符串
求Python程序,将固定文本文件中的文本按某字符串分开,输出几个新的文本文件
Java 如何使用输入流和输出流 将txt文件中的某一行数据删除?