替换字符的 Pythonic 方式

标签 python replace character-replacement

我想使用 pythonic 方法替换字符串中的一些字符。

A -> T
C -> G
G -> C
T -> A

例子:

AAATCGATTGAT

会变成

TTTAGCTAACTA

我做了什么:

def swap(string):
    string = re.sub('A', 'aux', string)
    string = re.sub('T', 'A', string)
    string = re.sub('aux', 'T', string)
    string = re.sub('C', 'aux', string)
    string = re.sub('G', 'C', string)
    string = re.sub('aux', 'G', string)

    return string

效果很好,但我正在寻找一种更 pythonic 的方式来实现它。

最佳答案

使用带有理解和str.join的字典:

translateDict = {
  "A" : "T",
  "C" : "G",
  "G" : "C",
  "T" : "A"
}

s1 = "AAATCGATTGAT"
reconstructed = "".join(translateDict.get(s, s) for s in s1)

这里有 live example

注意 dict.get 的使用;如果该字母不在字典中,我们就让它保持原样。

正如@bravosierra99 所建议的,您也可以简单地使用 str.translate :

reconstructed = s1.translate(string.maketrans(translateDict))

关于替换字符的 Pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54918034/

相关文章:

python - Flask Babel 不起作用

java - "Wrap to beginning when end is reached"是什么意思?

java - 在 Java 中对齐文本

javascript - 根据链接文本的内容添加类

regex - 使用带有字边界的 mgsub 函数作为替换值

c++ - 如何用常量字符替换字符串的子字符串,如 'X'

bash - tr 输出到新行

python - 知道函数不接受来自文档字符串的命名参数

python - Azure Functions for python、结构化日志记录到 Application Insights?

python - 有没有办法使用 reticulate 调用 r 中的基本 python 函数?