python - 只用一个替换几个不同的字符

时间:2017-06-27 09:36:49

标签: python regex string replace character

我正在寻找一种方法来替换另一个角色。

例如我们有:

  

chars_to_be_replaced =“ihgr”

我们希望将它们替换为

  

new_char =“b”

这样新的字符串

  

s =“我很饿”

成为

  

s'=“bm bunbby”。

我很清楚你可以使用.replace或正则表达式一次一个地执行此操作,但我正在寻找一种方法只能通过字符串。

re.sub只通过字符串一次吗?还有其他方法吗?感谢

由于

2 个答案:

答案 0 :(得分:1)

您可以使用string.translate()

from string import maketrans

chars_to_be_replaced = "ihgr"
new_char = "b"
s = "im hungry"

trantab = maketrans(chars_to_be_replaced, new_char * len(chars_to_be_replaced))

print s.translate(trantab)
# bm bunbby

答案 1 :(得分:0)

这个怎么样:

chars_to_be_replaced = "ihgr"
new_char = "b"

my_dict = {k: new_char for k in chars_to_be_replaced}

s = "im hungry"

new_s = ''.join(my_dict.get(x, x) for x in s)
print(new_s)  # bm bunbby

''.join(my_dict.get(x, x) for x in s)对于原始字符串中的每个字母,它会尝试获取字典值,除非它不存在,在这种情况下会返回原始字符。

  

注意:您可以通过将list传递给join而不是生成器来加快速度(

new_s = ''.join([my_dict.get(x, x) for x in s])