2017-02-08 7 views
0

In meinem Code, ich brauche alle mit 1s zu ersetzen, und alle os mit 0s. Ich kann es in zwei Aussagen tun, was Code ist wie folgt:auf einmal mehrere Zeichen in einer Zeichenfolge in Python ersetzen

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

aber ich brauche es alles auf einen Schlag zu tun. Irgendwelche Ideen?

+0

Bearbeiten Sie Ihre Frage, um ein Python2.x- oder Python3.x-Tag zu integrieren args für str.translate haben eine Menge zwischen Py2 und PY3 geändert –

+0

@johnmachin wird, tut mir leid, dass – byu

Antwort

3

können Sie string.translate verwenden:

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

# '1slkd010001' 
0

Sie mehrere Werte abbilden Liste Verständnis mit:

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

Gute Antwort tun - einige Bemerkungen über Stil etc: Schalten Sie den Namen nicht 'verwenden str' für Ihre eigenen Objekte - es Masken aus dem eingebauten Typ. Es ist auch in Ordnung, Namen aus einem Buchstaben zu verwenden, vorausgesetzt, ihr Umfang ist nicht sehr groß; aber ich (und j und k) bedeute für die meisten Menschen "index". Dein 'i' ist ein Charakter; es "c" zu nennen wäre besser. –

0

Diese Alternative verwendet eine dict Quelle Zeichen Ersatzzeichen zur Karte:

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