gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:09:28 25 4
gpt4 key购买 nike

假设我有一个很长的字符串,例如 'ABCEEEEEEDEDAAA......' 但它仅由五个字母组成。假设我希望所有的 'A' 都为 'D',反之亦然,并且 'B''C' (一个例子是 DNA 中的核苷酸......)。修改后的示例将是 'DCBEEEEEEAEADDD......。我意识到像 string.replace('A','D').replace('D','A') 这样的代码是行不通的。我想知道最快的方法是什么,因为我想到的另一种方法只是找到每个索引,这看起来有点复杂。

最佳答案

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

使用示例的缩短版本的示例,其中 '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'

此处 $ 用作占位符。如您所见,这对于大量替换需求来说变得很烦人。

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

关于python - 通过交换多个字母来修改字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47249435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com