Python:maketrans / translate相当于将3个字符的代码解码为1个字符

时间:2013-02-04 16:03:54

标签: python decoding

我需要将看起来像这样的字符串TAGGGC翻译成faTAG->fGGC->a,其中加密值不仅可以是字母,还可以是一些特殊字符)。我知道string.maketrans()translate()但这些仅适用于1-1解码。

在这种情况下我是否可以使用其他本机Python模块/函数,还是应该编写自己的函数?

2 个答案:

答案 0 :(得分:0)

你试过了吗?

mystring.replace("TAG","f").replace("GGC","a")

如果有其他约束,那么您可能需要回到re.sub

答案 1 :(得分:0)

如果它比你的例子更复杂,你可以根据re.sub定义一个带有dict的小函数作为输入。

In [98]: def repl(d, s):
     ...:     p = re.compile('|'.join(d))
     ...:     return p.sub(lambda m:d[m.group()], s)

In [99]: d = {'TAG':'f',
              'GGC':'a'}

In [100]: repl(d,'TAGGGC')
Out[100]: 'fa'