就做个俗人 2022-06-08 17:59 采纳率: 80%
浏览 27
已结题

python 同一位置不同的字符以另一个字符代替?怎样实现

我有两条这样的序列文件,现在我想处理的是:将两条序列,合并为一条序列,其中,相同字符的就保留输出,不相同的就以密码子表代替(R=A/G,Y=C/T,M=A/C,K=G/T,S=G/C,W=A/T等形式替换)并输出,如:

img

原始数据:

A01415
cttatcaattgagcaccggtctcaact
A01416
cttgtccactgagctccggtctcaact

预期结果:
cttrtcmaytgagcwccggtctcaact

  • 写回答

1条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-06-08 18:23
    关注

    区分大小写吗?

    d = {'AG':'R','CT':'Y','AC':'M','GT':'K','GC':'S','AT':'W'}
    
    s1 = 'cttatcaattgagcaccggtctcaact'
    s2 = 'cttgtccactgagctccggtctcaact'
    
    res = []
    for i in range(len(s1)):
        if s1[i]!=s2[i]:
            key = (s1[i]+s2[i]).upper()
            if not d.get(key): key=(s2[i]+s1[i]).upper()
            res.append(d.get(key).lower())
        else:
            res.append(s1[i])
    
    print(''.join(res))
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月18日
  • 已采纳回答 6月10日
  • 创建了问题 6月8日

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示