#! /usr/bin/python3.5
#-*- coding:UTF-8 -*-
# python 2.x需要指定编码方式
'''http://www.rcsb.org/pdb/explore/explore.do?structureId=1A26读取蛋白质结构数据库文件.pdb中的氨基酸,并转化为1个字符的氨基酸名
'''
fin = open("1a26.pdb", "r")
fout= open('fout.txt', 'w')
lib3=("GLY","ALA","VAL","LEU","ILE","PRO","PHE","TYR","TRP","SER","THR","CYS","MET","ASN","GLN","ASP","GLU","LYS","ARG","HIS")
lib1=('G','A','V','L','I','P','F','Y','W','S','T','C','M','N','Q','D','E','K','R','H')  line = fin.readline()
while line:    line=line.strip()   #当参数为空时,默认删除空白符(包括'\n','\r','\t', ' ')  p1=line.find(' ')  str=line[0:p1]       if 'SEQRES'==str:   while True:  line=line.strip()  site=line.find(' ')   #查找空格的位置,找不到,返回-1             if(site==-1):         #site==-1时本行字符串剩最后一个,处理完退出。  print ("line=%s"%line)  for i in range(len(lib3)):  if(lib3[i]==line):  fout.write(lib1[i]+'\n') print ("{0}: {1}".format(str,lib1[i])) break  str=line[0:site]      print ("line=%s"%line)           for i in range(len(lib3)):  if(lib3[i]==str):  fout.write(lib1[i])print ("{0}: {1}".format(str,lib1[i]))breakline=line[site:]  line = fin.readline()
fin.close()
fout.close()

C++ map版:

/***********************************************************************> File Name: 1a26.cpp> Author: ims> Created Time: 2017年05月17日 星期三 15时51分20秒************************************************************************/
#include<fstream>
#include<iostream>
#include<map>
#include<string>
using namespace std;
string& strip(string & s)
{  if (s.empty())   return s;  s.erase(0,s.find_first_not_of(" "));  s.erase(s.find_last_not_of(" ") + 1);  return s;
}
int main()
{string line;string sub;int pos=0;map<string,char>::iterator it;map<string,char>mymap={{"ALA",'A'},{"CYS",'C'},{"ASP",'D'},{"GLU",'E'},{"PHE",'F'},{"GLY",'G'},{"HIS",'H'},{"ILE",'I'},{"LYS",'K'},{"LEU",'L'},{"MET",'M'},{"ASN",'N'},{"PRO",'P'},{"GLN",'Q'},{"ARG",'R'},{"SER",'S'},{"THR",'T'},{"VAL",'V'},{"TRP",'W'},{"TYR",'Y'}};ifstream fin("1a26.pdb");ofstream fout("1a26.out.pdb");if(!fin.is_open()){cout<<"open file failed!"<<endl;return 1;}while( getline(fin,line) ){if(line.find("SEQRES")!=string::npos){while(1){line=strip(line);cout<<line<<endl;pos=line.find(" ")   ;if (pos==string::npos){it=mymap.find(line);if(it!=mymap.end()){cout<<sub<<" : "<<it->second<<endl;fout<<it->second;}break;}sub=line.substr(0,pos);it=mymap.find(sub);if(it!=mymap.end()){cout<<sub<<" : "<<it->second<<endl;fout<<it->second;}line=line.substr(pos+1);}}}fin.close();fout.close();return 0;
}

C++版本:

/***********************************************************************> File Name: 1a26.cpp> Author: ims> Created Time: 2017年05月17日 星期三 15时51分20秒************************************************************************/
#include<fstream>
#include<iostream>
#include<array>
#include<string>
using namespace std;
string& strip(string & s)
{  if (s.empty())   {  return s;  }  s.erase(0,s.find_first_not_of(" "));  s.erase(s.find_last_not_of(" ") + 1);  return s;
}
int main()
{string line;array<string,20>lib1={"G","A","V","L","I","P","F","Y","W","S","T","C","M","N","Q","D","E","K","R","H"};array<string,20>lib3={"GLY","ALA","VAL","LEU","ILE","PRO","PHE","TYR","TRP","SER","THR","CYS","MET","ASN","GLN","ASP","GLU","LYS","ARG","HIS"};ifstream fin("1a26.pdb");ofstream fout("1a26.out.pdb");if(fin.is_open()){cout<<"open succeed!"<<endl;}else{cout<<"open file failed!"<<endl;return 1;}string sub;int site=0;int i=0;while( getline(fin,line) ){if(line.find("SEQRES")!=string::npos){while(1){line=strip(line);site=line.find(" ") ;if (line.find(" ")==string::npos){i=0;for(auto it : lib3){if( it==line){cout<<line<<" : "<<lib1[i]<<endl;fout<<lib1[i]<<endl;break;}i++;}break;}sub=line.substr(0,site);cout<<line<<endl;i=0;for(auto it: lib3){if( it==sub){cout<<sub<<" : "<<lib1[i]<<endl;fout<<lib1[i];break;}i++;}line=line.substr(site+1);}}}fin.close();fout.close();return 0;
}

氨基酸三字母转一个字母相关推荐

  1. C语言 ,根据输入的字母输出一个字母金字塔

    这道题目的规则是: 比如输入A,则只输入一行 再如输入C 最后再输入一个J吧 到这里相信大家已经知道要输出的效果是怎么一个效果了吧,没看懂就拿出小笔笔画画很快就清楚了. 一般这种题目,要么输入行数来打 ...

  2. python实训三 编写函数,接收一个字符串,分别统计大写字母,小写字母,数字,其他字符的个数,并以元组的形式返回结果

    编写函数,接收一个字符串,分别统计大写字母,小写字母,数字,其他字符的个数,并以元组的形式返回结果 源码: intcount=[] upstrcount=[] lowstrcount=[] other ...

  3. java1a2b3c4d5e6f_用两个线程,一个输出字母,一个输出数字,交替输出1A2B3C4D...26Z...

    用两个线程,一个输出字母,一个输出数字,交替输出1A2B3C4D...26Z 方法一 public class Test { static Thread t1 = null, t2 = null; p ...

  4. 正则表达式中或关系表示及查找英文字母最后一个

    一.简单案例 1.\b是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符) eg:\bchild\b 2.\d 匹配数字 eg:0\d\d-\d\d\d\d\d\d\d\d 010-7022158 ...

  5. 字母查重 c语言,知网查重一个字母算字吗

    知网查重一个字母算字吗?在Word中是一个单词算一个字数,而就在知网查重检测系统中是一个字母算一个字符数.这也是为什么会出现总字数多了很多,或者是总字数特别少的原因,因为系统计算的是字符数而非字数.那 ...

  6. 汇编语言:输出一个小写字母的前导字母、自身与后续字母

    汇编语言:输出一个小写字母的前导字母.自身与后续字母 题目要求 编程平台 代码实现 题目要求 从键盘接收一个小写字母,然后找出它的前导字母和后续字母,再按顺序显示这三个字符. 要求小写字母" ...

  7. 设计科目类Subject,其类的实例表示大学课程科目。一门课程包含课程名(String)、课程编码(code)为六位字符串,前三位字符为字母代表学科领域,后三位字符为数字,课程编码是唯一的。

    求大神帮忙写一个变成 带注释的 我实在是没整明白!! 救救孩子吧 孩子可着急了! 设计科目类Subject,其类的实例表示大学课程科目.一门课程包含课程名(String).课程编码(code)为六位字 ...

  8. 用java怎样实现遍历一个字符串的每一个字母

    Java遍历一个字符串的每一个字母 String str = "asdfghjkl"; 方法一 String str = "asdfghjkl"; for(in ...

  9. 实现遍历一个字符串的每一个字母 java(附样例)

    Java遍历一个字符串的每一个字母 String str = "asdfghjkl"; 方法一 String str = "asdfghjkl"; for(in ...

  10. python中字母是什么类型_Python中只有一个字母的字符串属于字符类型。( )_学小易找答案...

    [单选题]下列选项中,用于标识为静态方法的是( ). [单选题]"多.夺.躲.惰"的区别在于( ) (7.0分) [单选题]子类能继承父类的一切属性和方法.( ) [单选题]使用类 ...

最新文章

  1. vijos 1512 SuperBrother打鼹鼠
  2. 苹果下架360的硅谷解读
  3. 群晖pxe安装windows_通过PXE快速部署VMware ESXi 6.5
  4. [html] html和html5有什么区别呢?
  5. java-多线程知识
  6. 【数学笑话】数学家与灯神
  7. 判断radio单选框是否选中
  8. mysql创建表的时候日期给个默认值_mysql 创建表时 日期字段默认值为当前时间...
  9. vs在release下调试时局部变量值错位修复
  10. python 导入的nan怎么解决_用Python处理了数据还要导入Excel做图表?直接Python做漂亮图表...
  11. Sparklyr与Docker的推荐系统实战
  12. 图像局部特征(八)--斑点检测子SIFT/SURF区别总结
  13. Android 自动轮播图+滑动效果
  14. 俄罗斯方块代码(自写)
  15. Java之校园卡管理系统
  16. python就业方向-学完Python的7大就业方向,哪个赚钱多?
  17. mysql中计算最大回撤_基金最大回撤算例(Java 1.8)
  18. 使用ls筛选某一天的文件
  19. 我的第一个WFF项目
  20. 个人python开发数据分析面试题分享

热门文章

  1. imitate wechat - 3
  2. ATT CK 阶段之 Initial Access --Drive-by Compromise
  3. 21年11月第二周 力扣每日一题记录
  4. 南京信息工程大学计算机与科学专业,2019南京信息工程大学专业排名
  5. python alpha通道_python – 使用matplotlib和alpha通道组合图片和绘图
  6. cardinal numbers (基数词) - ordinal numbers (序数词)
  7. 网件r7000梅林系统虚拟内存创建失败,提示USB磁盘读写速度不满足要求解决办法,有需要创建虚拟内存吗??
  8. Word增加和删除行号
  9. 51单片机学习笔记——AD转换
  10. Linux: E45: ‘readonly‘ option is set (add ! to override)