我想替换字符串中的字符,不使用字符串函数或类似string.replace。
>>> replace ("banana", "a", "e")
'benene'
所以对于这个例子,我想要替换字符" a"用" e"在字符串" banana"
中答案 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'
这支持映射多个字符,只需确保char
和replacement
参数的长度相等:
>>> replace("banana", "na", "so")
'bososo'
>>> replace("notabene", "na", "so")
'sotobese'