在python中一次替换字符串中的多个字符

在python中一次替换字符串中的多个字符,python,string,python-2.7,Python,String,Python 2.7,在我的代码中,我需要用1s替换所有Is,用0s替换所有os。我可以用两条语句来完成,代码如下: stringtochange=raw_input("What do you want to change?") print stringtochange.replace("I","1") print stringtochange.replace("o","0") 但我需要它一下子完成这一切。有什么想法吗?你可以使用字符串。翻译: s = "IslkdoIoooI" import string s.t

在我的代码中,我需要用1s替换所有Is,用0s替换所有os。我可以用两条语句来完成,代码如下:

stringtochange=raw_input("What do you want to change?")
print stringtochange.replace("I","1")
print stringtochange.replace("o","0")

但我需要它一下子完成这一切。有什么想法吗?

你可以使用
字符串。翻译

s = "IslkdoIoooI"
import string
s.translate(string.maketrans("Io", "10"))

# '1slkd010001'

您可以使用
string.translate

s = "IslkdoIoooI"
import string
s.translate(string.maketrans("Io", "10"))

# '1slkd010001'

可以使用列表理解映射多个值:

str = "Itesto"
source = ['I', 'o']
dest = ['1', '0']
''.join([dest[source.index(i)] if i in source else i for i in str])
>> '1test0'

可以使用列表理解映射多个值:

str = "Itesto"
source = ['I', 'o']
dest = ['1', '0']
''.join([dest[source.index(i)] if i in source else i for i in str])
>> '1test0'

此备选方案使用
dict
将源字符映射到替换字符:

>>> s = "HIJnop"; xmap = {"I": "1", "o": "0"}; ''.join([xmap.get(c, c) for c in s])
'H1Jn0p'

此备选方案使用
dict
将源字符映射到替换字符:

>>> s = "HIJnop"; xmap = {"I": "1", "o": "0"}; ''.join([xmap.get(c, c) for c in s])
'H1Jn0p'

请编辑您的问题以包含Python2.x或Python3.x标记——str.translate的参数在Py2和python之间发生了很大变化Py3@johnmachin可以了,很抱歉,请编辑您的问题以包含Python2.x或Python3.x标记——str.translate的参数在Py2和python之间发生了很大变化Py3@johnmachin行,,很抱歉这个回答很好——关于样式等的一些注释:不要对自己的对象使用名称
str
——它会掩盖内置类型。此外,也可以使用一个字母的名称,只要它们的范围不是很广;然而,对于大多数人来说,i(以及j和k)表示“索引”。你的
i
是一个字符;称它为
c
会更好。回答得好——关于样式等的一些注释:不要对自己的对象使用
str
这个名称——它掩盖了内置类型。此外,也可以使用一个字母的名称,只要它们的范围不是很广;然而,对于大多数人来说,i(以及j和k)表示“索引”。你的
i
是一个字符;叫它
c
会更好。