免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 11900 | 回复: 1
打印 上一主题 下一主题

[练习] 字母替换 [复制链接]

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-01 03:54 |只看该作者 |倒序浏览
问题:

有一个文件,内容如下:

    original1_for original2_for ND1 ND2 ND3 ND4 ND5
name1 A G AB AA BB BA NN
name2 T C BB BB AA NN AB
name3 G C AA BA NN BB AB
name4 C G BA AA BB NN AB
name5 A C AB BB NN BA AB

对每行来讲,从第四列开始,后面的字母组合均是替换过后的,
替换的原则是:original1_for="A",original2_for="B"。
现在想还原回去,即最终想要的结果如下(N就替换为0(零)):

对第 2 行来讲,第 1, 2 列 是 A, G
从第四列开始,后面的字母 A 替换为 A
从第四列开始,后面的字母 B 替换为 G
从第四列开始,后面的字母 N 替换为 0

name1 A G AB AA BB BA NN
替换为
name1 A G AG AA GG GA 00

最终想要的结果如下:

    original1_for original2_for ND1 ND2 ND3 ND4 ND5
name1 A G AG AA GG GA 00
name2 T C CC CC TT 00 TC
name3 G C GG CG 00 CC GC
name4 C G GC CC GG 00 CG
name5 A C AC CC 00 CA AC

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
2 [报告]
发表于 2013-12-01 03:57 |只看该作者
v1:
  1. #!/usr/bin/ruby -w
  2. hAB = { ?N => 0 }
  3. print DATA.gets

  4. DATA.each do |l|
  5.   sNAME, sA, sSP, sB, sSTRING =
  6.     l.scan(/(\S+\s+)(.)(\s+)(.)(.*)/m).flatten
  7.   hAB[?A], hAB[?B] = sA, sB
  8.   sSTRING.gsub!(/\S/, hAB)
  9.   print sNAME, sA, sSP, sB, sSTRING
  10. end

  11. __END__
  12.     original1_for original2_for ND1 ND2 ND3 ND4 ND5
  13. name1 A G AB AA BB BA NN
  14. name2 T C BB BB AA NN AB
  15. name3 G C AA BA NN BB AB
  16. name4 C G BA AA BB NN AB
  17. name5 A C AB BB NN BA AB
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP