在Python中使用ASCII文件中的注释查找/替换子字符串
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Python中使用ASCII文件中的注释查找/替换子字符串,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1480字,纯文字阅读大概需要3分钟。
内容图文
![在Python中使用ASCII文件中的注释查找/替换子字符串](/upload/InfoBanner/zyjiaocheng/719/96eff0d85c43459787fe5a2e926abd43.jpg)
在我正在研究的生物信息学项目中,我遇到了一些编码问题.基本上,我的任务是从数据库中提取基序序列并使用该信息来注释序列比对文件.对齐文件是纯文本,因此注释不会是任何复杂的,最好只是用对齐文件本身中的星号替换提取的序列.
我有一个脚本扫描数据库文件,提取我需要的所有序列,并将它们写入输出文件.鉴于查询,我需要读取这些序列并将它们与ASCII对齐文件中相应的子字符串相匹配.最后,对于每个出现的主题序列(一个非常大的字符串的子串),我会用一系列星号*替换主题序列XXXXXXX.
我正在使用的代码是这样的(11SGLOBULIN是数据库中蛋白质条目的名称):
motif_file = open('/users/myfolder/final motifs_11SGLOBULIN','r')
align_file = open('/Users/myfolder/alignmentfiles/11sglobulin.seqs', 'w+')
finalmotifs = motif_file.readlines()
seqalign = align_file.readlines()
for line in seqalign:
if motif[i] in seqalign: # I have stored all motifs in a list called "motif"
replace(motif, '*****')
但不是用一系列星号替换每个字符串,而是删除整个文件.谁能明白为什么会这样?
我怀疑问题可能在于我的ASCII文件基本上只是一个很长的氨基酸列表,而且Python不知道如何替换一个非常长的字符串中隐藏的特定子字符串.
解决方法:
像下面这样的东西应该做的伎俩.我已经对您的输入数据做了假设,因为您没有发布样本并且您正在运行python 2.7.
motifs = [ x.strip() for x in open('final motifs_11SGLOBULIN','r') ]
redact = '*****'
with open('11sglobulin.seqs','r') as data_in, open('11sglobulin.seqs.new','w') as data_out:
for seq in data_in:
for motif in motifs:
while True:
x = seq.find(motif)
if x >= 0:
seq = seq[:x] + redact + seq[x+len(motif):]
else:
break
data_out.write(seq)
内容总结
以上是互联网集市为您收集整理的在Python中使用ASCII文件中的注释查找/替换子字符串全部内容,希望文章能够帮你解决在Python中使用ASCII文件中的注释查找/替换子字符串所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。