用Python替换字符串中的字符

时间:2014-04-09 17:55:33

标签: python string replace

我想替换字符串中的字符,不使用字符串函数或类似string.replace。

 >>> replace ("banana", "a", "e")
'benene'

所以对于这个例子,我想要替换字符" a"用" e"在字符串" banana"

3 个答案:

答案 0 :(得分:5)

你不是很远:)

"banana".replace("a", "e")

除非你的意思是,没有使用str.replace函数:)在这种情况下这是算法

def replace(str, old_char, new_char):
    return ''.join([c if c != old_char else new_char for c in str])

答案 1 :(得分:2)

如果出于某种原因你需要避免使用str.replace(YUCK我讨厌人工要求)你可以将它包含在列表理解中。

NEW_CHAR = 'e'
OLD_CHAR = 'a'

''.join([NEW_CHAR if c == OLD_CHAR else c for c in "banana"])

答案 2 :(得分:2)

单字符替换最好留给str.translate()

try:
    # Python 2
    from string import maketrans
except ImportError:
    # Python 3
    maketrans = str.maketrans


def replace(original, char, replacement):
    map = maketrans(char, replacement)
    return original.translate(map)
到目前为止,

str.translate()是每个字符替换映射的最快选项。

演示:

>>> replace("banana", "a", "e")
'benene'

这支持映射多个字符,只需确保charreplacement参数的长度相等:

>>> replace("banana", "na", "so")
'bososo'
>>> replace("notabene", "na", "so")
'sotobese'