加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 通过交换多个字母来修改字符串

发布时间:2020-12-20 12:04:15 所属栏目:Python 来源:网络整理
导读:假设我有一个非常长的字符串,如’ABCEEEEEEDEDAAA ……’,但它只有五个字母组成.假设我希望所有’A’都是’D’,反之亦然,和’B’和’C’相同(例如DNA中的核苷酸……).修改后的例子是’DCBEEEEEEAEADDD …….我意识到像string.replace(‘A’,’D’)这样的代码
假设我有一个非常长的字符串,如’ABCEEEEEEDEDAAA ……’,但它只有五个字母组成.假设我希望所有’A’都是’D’,反之亦然,和’B’和’C’相同(例如DNA中的核苷酸……).修改后的例子是’DCBEEEEEEAEADDD …….我意识到像string.replace(‘A’,’D’)这样的代码.替换(‘D’,’A’)就行不通了.我想知道什么是最快的方法,因为我遇到的另一种方法就是找到每个索引,看起来有点复杂.

解决方法

由于要求是多次替换,因此最好先使用 str.maketranslate()创建映射表来使用 str.translate().

使用缩短版本样本的示例,其中’A’ – >’D’,’D’ – >’A’,’B’ – >’C’,’C’ – >’B’

>>> s = 'ABCEEEEEEDEDAAA'
>>> orig = 'ABCD'
>>> rep = 'DCBA'
>>> trans_table = str.maketrans(orig,rep)

>>> s.translate(trans_table)
=> 'DCBEEEEEEAEADDD'

另一种方法是使用str.replace函数,但是对于相同的功能需要更多的代码行.可以使用临时占位符进行替换.

示例:假设只是’A’ – >’B’和’B’ – >’A’

>>> s = 'ABBA'
>>> s = s.replace('A','$')
#'$BB$'
>>> s = s.replace('B','A')
#'$AA$'
>>> s = s.replace('$','B')
>>> s
=> 'BAAB'

这里$用作占位符.如您所见,这对于需要大量更换而言变得令人厌烦.

注意:在上面的方法中,占位符也应该是唯一的,并且不应该已经存在于字符串中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读