免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 893932098
打印 上一主题 下一主题

文本处理问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-12-12 18:08 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
白羊座
日期:2014-06-17 11:04:28午马
日期:2014-12-29 15:37:13
12 [报告]
发表于 2014-12-12 18:36 |只看该作者
  1. a = [x.strip().split()[5] for x in open('PYL5.pdb') if x.startswith('ATOM')]
  2. f = [x for x in open('PYL5.pdb') if x.startswith('ATOM')]
  3. for i in range(1,len(a)):
  4.     if int(a[i])-int(a[i-1]) == 1 or int(a[i])-int(a[i-1]) == 0:
  5.         pass
  6.     else:
  7.         f[i] = 'TER\n'+f[i]

  8. with open('PYL50.pdb','w') as fw:
  9.     fw.writelines(f)
复制代码
试试这个如何?

论坛徽章:
0
13 [报告]
发表于 2014-12-13 11:29 |只看该作者
支持楼主,推荐~~

论坛徽章:
0
14 [报告]
发表于 2014-12-13 13:24 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
15 [报告]
发表于 2014-12-13 13:24 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
16 [报告]
发表于 2014-12-15 19:51 |只看该作者
awk实现,尝试新的解决方案。

awk 'NR==1{a=$6;print $0;next}{if(a==$6||++a==$6)print $0;else{ print "TER";print $0;a=$6}}'

论坛徽章:
3
金牛座
日期:2013-08-26 10:25:02摩羯座
日期:2013-09-09 15:14:322015年亚洲杯之约旦
日期:2015-05-06 09:33:56
17 [报告]
发表于 2014-12-16 13:01 |只看该作者
本帖最后由 kooleon 于 2014-12-16 13:05 编辑

$  awk -F "[ ]+"  'NR==1 {i=$6;print $0;next} {print ($6==i || $6==i+1)?$0:"TER";i=$6}' file1
ATOM    573  O   MET B 110       7.574  -8.751  -3.774  1.00 41.42           O
ATOM    574  N   VAL B 111       7.244  -7.123  -5.328  1.00 41.20           N
ATOM    575  CA  VAL B 111       6.111  -6.471  -4.776  1.00 42.74           C
ATOM    576  CB  VAL B 111       6.348  -4.974  -4.674  1.00 43.45           C
ATOM    577  CG1 VAL B 111       5.257  -4.266  -3.868  1.00  0.00           C
ATOM    578  CG2 VAL B 111       7.740  -4.774  -4.049  1.00  0.00           C
ATOM    579  C   VAL B 111       5.022  -6.999  -5.683  1.00 46.95           C
ATOM    580  O   VAL B 111       4.896  -8.203  -5.503  1.00 55.71           O
TER
ATOM    582  CA  PRO B 116       3.376  -7.544  -7.190  1.00 75.54           C
ATOM    583  CD  PRO B 116       3.417  -5.287  -6.413  1.00 80.36           C
ATOM    584  CB  PRO B 116       2.112  -6.860  -7.716  1.00 74.55           C
ATOM    585  CG  PRO B 116       1.983  -5.596  -6.861  1.00 78.83           C
ATOM    586  C   PRO B 116       4.211  -8.026  -8.313  1.00 73.33           C
ATOM    587  O   PRO B 116       5.059  -8.901  -8.186  1.00 70.39           O
ATOM    588  N   ALA B 117       3.949  -7.422  -9.446  1.00 69.09           N
ATOM    589  CA  ALA B 117       4.764  -7.535 -10.648  1.00 61.56           C
ATOM    590  CB  ALA B 117       3.884  -7.662 -11.887  1.00 60.67           C
ATOM    591  C   ALA B 117       5.680  -6.324 -10.742  1.00 65.02           C
ATOM    592  O   ALA B 117       5.554  -5.488 -11.648  1.00 69.82           O
ATOM    593  N   VAL B 118       6.576  -6.224  -9.765  1.00 61.78           N


嗯。刚才想了下,思路和楼上一相,还是贴出来吧

论坛徽章:
0
18 [报告]
发表于 2014-12-16 14:35 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
19 [报告]
发表于 2014-12-16 22:11 |只看该作者
我都觉得我可以写,哈哈
就是缓存上一个值比较呗

  1. [~/python]$ cat PYL5.pdb
  2. ATOM    573  O   MET B 110       7.574  -8.751  -3.774  1.00 41.42           O
  3. ATOM    574  N   VAL B 111       7.244  -7.123  -5.328  1.00 41.20           N
  4. ATOM    575  CA  VAL B 111       6.111  -6.471  -4.776  1.00 42.74           C
  5. ATOM    576  CB  VAL B 111       6.348  -4.974  -4.674  1.00 43.45           C
  6. ATOM    577  CG1 VAL B 111       5.257  -4.266  -3.868  1.00  0.00           C
  7. ATOM    578  CG2 VAL B 111       7.740  -4.774  -4.049  1.00  0.00           C
  8. ATOM    579  C   VAL B 111       5.022  -6.999  -5.683  1.00 46.95           C
  9. ATOM    580  O   VAL B 111       4.896  -8.203  -5.503  1.00 55.71           O
  10. ATOM    581  N   PRO B 116       4.195  -6.511  -6.588  1.00 77.67           N
  11. ATOM    582  CA  PRO B 116       3.376  -7.544  -7.190  1.00 75.54           C
  12. ATOM    583  CD  PRO B 116       3.417  -5.287  -6.413  1.00 80.36           C
  13. ATOM    584  CB  PRO B 116       2.112  -6.860  -7.716  1.00 74.55           C
  14. ATOM    585  CG  PRO B 116       1.983  -5.596  -6.861  1.00 78.83           C
  15. ATOM    586  C   PRO B 116       4.211  -8.026  -8.313  1.00 73.33           C
  16. ATOM    587  O   PRO B 116       5.059  -8.901  -8.186  1.00 70.39           O
  17. ATOM    588  N   ALA B 117       3.949  -7.422  -9.446  1.00 69.09           N
  18. ATOM    589  CA  ALA B 117       4.764  -7.535 -10.648  1.00 61.56           C
  19. ATOM    590  CB  ALA B 117       3.884  -7.662 -11.887  1.00 60.67           C
  20. ATOM    591  C   ALA B 117       5.680  -6.324 -10.742  1.00 65.02           C
  21. ATOM    592  O   ALA B 117       5.554  -5.488 -11.648  1.00 69.82           O
  22. ATOM    593  N   VAL B 118       6.576  -6.224  -9.765  1.00 61.78           N
  23. [~/python]$ cat Change.py
  24. #!/usr/bin/python
  25. import re

  26. filein = open('PYL5.pdb','r')
  27. fileout = open('PYL5out.pdb','w+')
  28. initflag=1
  29. for line in filein:
  30.         data=int(line.split()[5])
  31.         if initflag==0:
  32.                 if data==lastdata+1 or data==lastdata:
  33.                        fileout.write("%s"%(line))
  34.                 else:
  35.                        fileout.write("TER\n")
  36.         elif initflag==1:
  37.                 fileout.write("%s"%(line))
  38.                 initflag=0
  39.         lastdata=data
  40. filein.close()
  41. fileout.close()

  42. [~/python]$ cat PYL5out.pdb
  43. ATOM    573  O   MET B 110       7.574  -8.751  -3.774  1.00 41.42           O
  44. ATOM    574  N   VAL B 111       7.244  -7.123  -5.328  1.00 41.20           N
  45. ATOM    575  CA  VAL B 111       6.111  -6.471  -4.776  1.00 42.74           C
  46. ATOM    576  CB  VAL B 111       6.348  -4.974  -4.674  1.00 43.45           C
  47. ATOM    577  CG1 VAL B 111       5.257  -4.266  -3.868  1.00  0.00           C
  48. ATOM    578  CG2 VAL B 111       7.740  -4.774  -4.049  1.00  0.00           C
  49. ATOM    579  C   VAL B 111       5.022  -6.999  -5.683  1.00 46.95           C
  50. ATOM    580  O   VAL B 111       4.896  -8.203  -5.503  1.00 55.71           O
  51. TER
  52. ATOM    582  CA  PRO B 116       3.376  -7.544  -7.190  1.00 75.54           C
  53. ATOM    583  CD  PRO B 116       3.417  -5.287  -6.413  1.00 80.36           C
  54. ATOM    584  CB  PRO B 116       2.112  -6.860  -7.716  1.00 74.55           C
  55. ATOM    585  CG  PRO B 116       1.983  -5.596  -6.861  1.00 78.83           C
  56. ATOM    586  C   PRO B 116       4.211  -8.026  -8.313  1.00 73.33           C
  57. ATOM    587  O   PRO B 116       5.059  -8.901  -8.186  1.00 70.39           O
  58. ATOM    588  N   ALA B 117       3.949  -7.422  -9.446  1.00 69.09           N
  59. ATOM    589  CA  ALA B 117       4.764  -7.535 -10.648  1.00 61.56           C
  60. ATOM    590  CB  ALA B 117       3.884  -7.662 -11.887  1.00 60.67           C
  61. ATOM    591  C   ALA B 117       5.680  -6.324 -10.742  1.00 65.02           C
  62. ATOM    592  O   ALA B 117       5.554  -5.488 -11.648  1.00 69.82           O
  63. ATOM    593  N   VAL B 118       6.576  -6.224  -9.765  1.00 61.78           N

复制代码
回复 3# 893932098


   

论坛徽章:
0
20 [报告]
发表于 2014-12-17 09:02 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP